SQL查询中的PHP if语句

SQL查询中的PHP if语句,php,mysql,sql,Php,Mysql,Sql,因此,我试图在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)

因此,我试图在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语句中添加额外的子句

谢谢你的帮助

试试这个:

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

字符串缩聚中不能有
if
表达式。此外,您还缺少尾随的

另外,
mysql\u real\u escape\u string()
不通过引用获取变量,因此返回修改后的字符串:

if($var != 0) { $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));
$db=newpdo($dsn、$username、$password、$database);
$stmt=$db->prepare('SELECT*fromtable其中(:SELECT 0 AND column=:value)');
$stmt->execute(数组(':select'=>$var',:value'=>$var));

这是一种完全的MySQL方式。请您评论一下它可能产生的示例结果好吗?我想学习这个查询。感谢您这取决于您拥有的数据:该查询告诉数据库只收集
正好等于
$value
且用户指定的参数不等于零的行。关键是,数据库不仅仅是一个用于存储数据的巨大哈希表;它们还能够非常高效地过滤和操作大量数据——比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);