MySQL资源无效


Invalid MySQL resource

我试图使用以下if/else语句来构建查询,但在第一步中评估NULL时遇到了问题。

在网上搜索了一番之后,我似乎找不到我做错了什么。。。我应该使用空引号吗:""
不过,这也给了我一个错误。

所以我不知道问题是在第一个块还是第二个块,也就是while循环。

有什么建议吗?

$name = $_POST['Your_name'];
if ($location != "All" && $name == NULL)  $query="SELECT * FROM talent WHERE duty_station='$location')";
else if($location == "All" && $name != "All" ) $query="SELECT * FROM talent WHERE Your_name IN ('$name')";
else if($dutyReq != "All" && $name == "All" ) $query="SELECT * FROM talent WHERE  duty_station='$location'";
else if($location == "All" || $name == "All" ) $query="SELECT * FROM talent";

然后我打印数据的循环给了我这个错误:

警告:mysql_fetch_array():在/var/www/html/talent/searchresults.php64行中,提供的参数不是有效的mysql结果资源

这是错误的来源代码:

   $result=mysql_query($query); 
   mysql_query($result);
    echo "<table border='1'>
    <tr>
    <th>Your name</th>
    <th>duty station</th>
    <th>first proficiency</th>
    </tr>";
   while($row = mysql_fetch_array($result)){
        echo "<tr>";
        echo "<td>" . $row['Your_name'] . "</td>";
        echo "<td>" . $row['duty_station'] . "</td>";
        echo "<td>" . $row['prof_order_processing'] . "</td>";
        echo "</tr>";
        }
echo "</table>";

您的第一个SQL查询中有一个错误(一个额外的右括号):

$query="SELECT * FROM talent WHERE duty_station='$location')";

应该是:

$query="SELECT * FROM talent WHERE duty_station='$location'";

有了这些代码行:

$result=mysql_query($query); 
mysql_query($result);

你想达到什么目的?您正试图将MySQL资源用作查询字符串
拆下第二根管路。


如果未设置$_POST['name'],您将看到

注意:未定义的索引:<文件名>在线X

要解决此问题,请使用以下代码:

$name = empty($_POST['name']) ? null : $_POST['name'];

记住要保护您的代码不受SQL注入的影响。

不鼓励使用mysql_*函数,您应该使用PDO
您可以使用PDO::prepare使您的代码更加安全。

我认为问题出在这行:

mysql_query($result);

它不应该在那里。不能调用mysql_query函数并给它一个不是sql脚本的变量。删除此行。

在php中,您应该编写这样的

$name = $_POST['Your_name'];
if(isset($name) && !empty($name))
{
  //some code
}

此外,您还可以添加更多的检查,如is_array(如果您希望使用纯字符串)等。