SQL查询中的PHP if语句


PHP if statement in SQL query

因此,我试图在PHP代码中的SQL查询中包含if语句。基本上,我想说"如果$var不是0,请添加WHERE子句,但如果$var是0,请不要添加"。

下面的代码似乎不起作用。非常感谢您的帮助!

$var = $_GET["var"];
$query = sprintf("SELECT * FROM table ".if($var != 0) { echo "WHERE var = '%s'," }."
  if($var != 0) { mysql_real_escape_string($var) });
$result = mysql_query($query);

更新

我最终决定,由于我将对多个变量使用多个条件,因此最好执行以下操作:

$var = $_GET["var"];
$string ='';
if ($var != 0) {
  $string = "WHERE var =". $var . " ";
}
$query = sprintf("SELECT * FROM table ". $string.");
$result = mysql_query($query);

现在,我可以使用任意多的变量,并向SQL语句中添加额外的子句。

谢谢你的帮助!!

字符串连接中不能有if表达式。此外,您还缺少后面的"

$query = sprintf("SELECT * FROM table ". $var != 0 ? "WHERE var = '%s'" : "");

此外,mysql_real_escape_string()没有引用变量,因此返回修改后的字符串:

if($var != 0) { $var = mysql_real_escape_string($var) });

试试这个:

$query = sprintf("SELECT * FROM table%s", $var != 0 ? " WHERE var = '" . mysql_real_escape_string($var) . "'" : "");

不要为此使用PHP;使用数据库。

$db = new PDO($dsn, $username, $password, $database);
$stmt = $db->prepare('SELECT * FROM table WHERE (:select <> 0 AND column = :value)');
$stmt->execute(array(':select' => $var, ':value' => $var));
$var = $_GET["var"];
$string ='';
if ($var != 0) {
  $string = "WHERE var =". $var . " ";
}
$query = sprintf("SELECT * FROM table ". $string.");
$result = mysql_query($query);