Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无效的MySQL资源_Php_Mysql - Fatal编程技术网

Php 无效的MySQL资源

Php 无效的MySQL资源,php,mysql,Php,Mysql,我试图使用下面的if/else语句来构建查询,但在第一步中计算NULL时遇到问题 在网上搜索之后,我似乎无法找到我做错了什么。。。我应该使用空引号吗? 不过,这也给了我一个错误 所以我不知道问题是在第一个块还是在第二个块,这是while循环 有什么建议吗 $name = $_POST['Your_name']; if ($location != "All" && $name == NULL) $query="SELECT * FROM talent WHERE duty_st

我试图使用下面的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_数组:在第64行的/var/www/html/talent/searchresults.php中,提供的参数不是有效的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>";

在php中,您应该编写如下内容

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

如果需要纯字符串等,还可以添加更多检查,如is_数组。

我认为这行有问题:

mysql_query($result);
它不应该在那里。您不能调用mysql_查询函数并为其指定非sql脚本的变量。
删除此行。

您的第一个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资源用作查询字符串。 拆下第二行

如果未设置$\u POST['name'],您将看到

注意:未定义索引:X行中的名称

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

$name = empty($_POST['name']) ? null : $_POST['name'];
并记住保护您的代码不受SQL注入的影响

不鼓励使用mysql_*函数,您应该改为使用。
您可以使用使代码更安全。

这里的SQL语句中似乎有错误,请选择*FROM talent WHERE duty_station='$location'-->您的代码易受SQL注入攻击。您真的应该使用,将变量作为参数传递到其中,而这些参数不会对SQL进行计算。如果你不知道我在说什么,或者不知道如何修复它,那就读一读。@eggyal-哦。。。我知道Bobby Tables做了什么,但我从来没有看到过这种解释。太好了!我会把它传下去。@JeremyJStarcher你也可以把它写成大写。@RomanS,我已经解决了这个问题,但它仍然会给我同样的错误:mysql\u fetch\u array为什么将isset与empty结合使用?您只能使用empty,因为如果未设置变量,它将不会生成警告…@glavić:真的吗?很高兴知道。我从来没有用过它,因为我认为它会。。。thx.我会在$u POST['Your_name']上做检查。另外,严格地说,您应该使用===null或is_null作为0==null,@PhilipWhitehouse也应该使用===null,这看起来是什么样子的呢?看起来它确实可以处理这两个仍然存在的问题:mysql_query$result$结果=mysql\u query$query@user1658726您不需要mysql_query$result;,它将抛出一个错误。拆下那条线。