php - SQL where 子句给出空结果

标签 php mysql if-statement where-clause

我有以下简单的 php 代码,它给出了我想要显示的结果。

$linkz= mysql_connect($host,$username,$password) or die(mysql_error());
mysql_select_db($db, $linkz);


$sq_name= $_POST['unameTF'];
$sq_pass= $_POST['passTF'];
$sq_search= $_POST['searchTF'];

if($sq_search=""||$sq_search=null)
{
echo "type something";
}else
{
$sql2= "SELECT * FROM sql_insert WHERE sq_name='$sq_search' ";
$res= mysql_query($sql2, $linkz) or die(mysql_error());
}

    while($row=mysql_fetch_assoc($res))
    }
    echo "$row[sq_name]"."<br/>";
    }

这总是给我一个空结果(即它不会给出错误或显示任何东西)。 当删除 if-else 语句时它工作正常意味着它只是

$sql2= "SELECT * FROM sql_insert WHERE sq_name='$sq_search' ";
$res= mysql_query($sql2, $linkz) or die(mysql_error());

并且不检查它是否为空。

如果我更换

$sql2= "SELECT * FROM sql_insert WHERE sq_name='$sq_search' ";

$sql2= "SELECT * FROM sql_insert WHERE sq_name='".$_POST['searchTF']."' ";

(即使不删除 if-else 语句)

谁能解释一下这是怎么回事?

最佳答案

它在没有 if() 语句的情况下工作的原因是因为您使用了赋值运算符,而不是比较运算符,导致 if 语句的流程像这样工作:

if we can set $sq_search = "" ... we can!
    check that it's not a null-terminated value... that's good too!
if we can set $sq_search = null ... we can!
    check that it's not a null-terminated value... it is, this answer is false
do that else statement,
    compile the string, output will be: "SELECT * FROM sql_insert WHERE sq_name=''"

将您的 if 语句替换为:

if($sq_search===""||is_null($sq_search)){
    echo "type something";
} else {
    $sql2= "SELECT * FROM sql_insert WHERE sq_name='$sq_search' ";
    $res= mysql_query($sql2, $linkz) or die(mysql_error());
}

关于php - SQL where 子句给出空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681915/

相关文章:

php - 将数组编码为不带数组索引的 JSON 字符串

codeigniter - 如何为 CodeIgniter 设置 date.timezone 以使用 php 5.3

mysql - 在单词的第一部分创建mysql索引

c++ - for 循环批处理数据并将其扔给 C++ 中的 MySQL 查询第 2 部分

php - 使用 PDO 语句更新 mysql 时遇到问题

php - 如何在数据库架构中表达购物网站的工作流和数据结构及其操作?

java - Android EditText 验证

ms-access - Access VBA : If Form Value <> NULL then run query else, end if。 - 没有做任何事

unix - Makefile 规则和 If 语句——如何实现?

php - 如何计算mysql中两列的结果