mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2");
这是行不通的。PHP mysql选择QUERY与或
基本上,我希望能够选择它,其中id是一个变量的值或另一个的值。
谢谢。
编辑:ID列是数字。
php
mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2");
这是行不通的。PHP mysql选择QUERY与或
基本上,我希望能够选择它,其中id是一个变量的值或另一个的值。
谢谢。
编辑:ID列是数字。
正如其他人所说,你确认,问题是,您正在使用字符串文字来比较数字列。有它的工作,查询应该像
mysql_query("SELECT * FROM foo WHERE id =$foo OR id = $foo2");
然而,这种解决方案具有非常非常坏的代码味道!
首先,这是为什么IN
存在:要能写
mysql_query("SELECT * FROM foo WHERE id IN ($foo, $foo2)");
第二,你注入转义串到你的查询?如果你是,你的代码容易受到sql injection的影响!你知道我们是在谈论整数值这种特定情况下
$query = sprintf("SELECT * FROM foo WHERE id IN ('%s', '%s')",
mysql_real_escape_string($foo),
mysql_real_escape_string($foo2));
mysql_query($query);
或交替这样的,因为:
逃生和报价您的变量是安全的,这样(一般情况下)$query = sprintf("SELECT * FROM foo WHERE id IN (%s, %s)",
intval($foo), intval($foo2));
mysql_query($query);
脚注:据我所知,使用sprintf
这样的时候,人们还可以处理整数值,只要使用%d
代替如果%s
的格式说明。然而,我相信只要看一个地方(参数列表)而不是多个地方(我在变量上使用intval
?或者我没有使用,但我正在使用%d
在格式字符串中,所以我仍然可以吗?)。这听起来可能与直觉相反,但在面对修改时它更强大。
我想你忘记了过去的“字符
mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2'");
但因为id列是数值,你应该使用:
mysql_query("SELECT * FROM foo WHERE id = $foo OR id = $foo2");
试试这个:
mysql_query(sprintf("SELECT * FROM foo WHERE id = %s OR id = %s", $foo, $foo2));
我建议你使用mysql_error()来获得MySQL错误(如果存在)。
mysql_query(..) or die('Erro:'.mysql_error());
mysql_error返回mysql中发生的最后一个错误。
是ID列的数字? – ManseUK
在代码中缺少''''。只是一个错字? – Kakashi
_“这不起作用。”_是否是从MySql获得的错误?为什么给定的查询不起作用,我认为它有点冗长,但我可能会误解。 – CodeCaster