Php 检查并从数据库返回值

Php 检查并从数据库返回值,php,mysql,Php,Mysql,我有一个小问题: 我想从数据库中检索一些行,它检索得很好,但当我在文本字段中插入数据库中不存在的特定值进行跟踪时,它返回一个空/空白页,下面是我使用的代码: <form id="track" name="track" method="post" action="track_now.php"> <h2>Track your shipment Here</h2> <p><label> Tracking Ref

我有一个小问题:

我想从数据库中检索一些行,它检索得很好,但当我在文本字段中插入数据库中不存在的特定值进行跟踪时,它返回一个空/空白页,下面是我使用的代码:

<form id="track" name="track" method="post" action="track_now.php"> 
        <h2>Track your shipment Here</h2>

      <p><label> Tracking Reference: 
      <input type="text" id="reference" name="reference" value="" maxlength="40" required="required" /></label></p>


      <div class="button_holder">

        <p>   <input type="submit" id="track" value="Track Now" maxlength="40" required="required" /></label>
      </label></p>

      </div>
</form>
这是track_now.php

<form id="track" name="track" method="post" action=""> 
        <h2>Your Shipment Result</h2>

            <?php
//error_reporting(0);
$ref = mysql_real_escape_string($_POST['reference']);

// conmnecting to the database
if(isset($ref))
{ 
$db = mysql_connect('localhost', 'admin', "admin") or die(mysql_error("Cannot Connect to Database")); 
mysql_select_db('tracking') or die(mysql_error());

 $sql = "SELECT * FROM order_tracking WHERE ship_ref = '".$ref."' "; 

$rs  = mysql_query($sql);
if($row = mysql_fetch_array($rs)) {

echo '<table width="518" border="1";>'; 

         echo '<tr>';
 echo '<td width="137" style="font-size:12px; padding: 5px;" >Shipment Reference: </td>';
  echo '<td width="365" style="background-color:#fcfcfc; padding: 10px;  font-size:12px;">' . $row['ship_ref'] . "<br />" . '</td>'; 
 echo '</tr>';

     echo '<tr>';
 echo '<td width="137" style="font-size:12px; padding: 5px;" >Shipment Type: </td>';
 echo '<td width="365" style="background-color:#fcfcfc; padding: 10px;  font-size:12px;">' . $row['ship_type'] . "<br />" . '</td>'; 
 echo '</tr>';

}

echo "</table>";
}
else if ($rs != $row) {
print 'Invalid Tracking Number, Please <a href="tracking.php"> click here </a> to try  again' ;
}

mysql_close();
?>    

请问,我做错了什么?

您的情况可以简化,请尝试以下方法:

if(isset($ref)){ 
    $db = mysql_connect('localhost', 'admin', "admin") or die(mysql_error("Cannot Connect to Database")); 
    mysql_select_db('tracking') or die(mysql_error());

    $sql = "SELECT * FROM order_tracking WHERE ship_ref = '".$ref."' "; 
    $rs  = mysql_query($sql);
    if(!rs){
        die(mysql_error());
    }

    if($row = mysql_fetch_array($rs)) {
        echo '<table width="518" border="1";>'; 

        echo '<tr>';
        echo '<td width="137" style="font-size:12px; padding: 5px;" >Shipment Reference: </td>';
        echo '<td width="365" style="background-color:#fcfcfc; padding: 10px;  font-size:12px;">' . $row['ship_ref'] . "<br />" . '</td>'; 
        echo '</tr>';

        echo '<tr>';
        echo '<td width="137" style="font-size:12px; padding: 5px;" >Shipment Type: </td>';
        echo '<td width="365" style="background-color:#fcfcfc; padding: 10px;  font-size:12px;">' . $row['ship_type'] . "<br />" . '</td>'; 
        echo '</tr>';
        echo "</table>";
    }
    mysql_close();
}
else{
    print 'Invalid Tracking Number, Please <a href="tracking.php"> click here </a> to try  again' ;
}

将特定值插入数据库中不存在的字段是什么意思?请使用mysqli或PDO。。mysql\u函数不再维护。另外,您没有像这样关闭表单:我没有看到名为reference的表单元素。我也看不到结束标记。在打开警告后立即在文件顶部添加错误报告:mysql_查询是一个过时的接口,不应在新的应用程序中使用,因为它将在未来的PHP版本中删除。一个现代的替代品。如果您是PHP新手,可以使用类似的指南来帮助您解释最佳实践。大家好,谢谢您的回复。情况就是这样。用户来到站点跟踪某个内容。他插入一个引用并单击track,引用号返回数据库中的行。这很好,但我希望出现这样的情况:如果插入了错误的号码,就会弹出一条警告消息,如:无效号码/错误号码。我已经编辑了包含表单元素的代码。另外,我已经关闭了表单,但仍然没有更改..如何以及在何处使用PDO对象?当我使用else时,dreamweaver给了我代码提示错误。出于好奇,为什么你在这里发布问题后消失了9个小时\?hello@Meda,感谢这些代码,不幸的是,这些代码在C:\wamp错误中使用了未定义的常量rs-假定为“rs”。我在这里做错了什么?@AdenijiOlasunkanmi我错过了美元符号,我相信你能纠正我的小错误。我很抱歉@meda,当我发布问题时,已经是晚上10:37了,所以我睡了。时差太大了。现在是早上7点07分。。我不是故意消失的,我只是不能欺骗大自然。。请接受我的道歉。
if(mysql_num_rows($rs) > 0){
  //found a row
}