为什么这个PHP/mySQL查询会给我一个错误?
我正在生成查询的第一部分,如下所示:为什么这个PHP/mySQL查询会给我一个错误?,php,mysql,Php,Mysql,我正在生成查询的第一部分,如下所示: while ($all_products = $db->fetch_array($all_prods)) { $filter_string .= 'AND product_id !='; $filter_string .= $all_products['item_id']; $filter_string .= ' '; } $sql_more_items = $d
while ($all_products = $db->fetch_array($all_prods))
{
$filter_string .= 'AND product_id !=';
$filter_string .= $all_products['item_id'];
$filter_string .= ' ';
}
$sql_more_items = $db->query("SELECT * FROM db_products
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "'
ORDER BY RAND() LIMIT 10");
$queryString = "SELECT * FROM db_products WHERE owner_id='$user_id'"
." AND active=1 " //Note these
. $filter_string //are separated
. "ORDER BY RAND() LIMIT 10 "; //into individual lines
$sql_more_items = $db->query($queryString);
然后第二部分是这样的:
while ($all_products = $db->fetch_array($all_prods))
{
$filter_string .= 'AND product_id !=';
$filter_string .= $all_products['item_id'];
$filter_string .= ' ';
}
$sql_more_items = $db->query("SELECT * FROM db_products
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "'
ORDER BY RAND() LIMIT 10");
$queryString = "SELECT * FROM db_products WHERE owner_id='$user_id'"
." AND active=1 " //Note these
. $filter_string //are separated
. "ORDER BY RAND() LIMIT 10 "; //into individual lines
$sql_more_items = $db->query($queryString);
但是它给了我一个mySQL语法错误,$filter_string
部分奇怪地在字符串前后添加了两次'
,因此它的运行方式如下:
while ($all_products = $db->fetch_array($all_prods))
{
$filter_string .= 'AND product_id !=';
$filter_string .= $all_products['item_id'];
$filter_string .= ' ';
}
$sql_more_items = $db->query("SELECT * FROM db_products
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "'
ORDER BY RAND() LIMIT 10");
$queryString = "SELECT * FROM db_products WHERE owner_id='$user_id'"
." AND active=1 " //Note these
. $filter_string //are separated
. "ORDER BY RAND() LIMIT 10 "; //into individual lines
$sql_more_items = $db->query($queryString);
其中user\u id='12345'和active=1'以及product\u id=0001和产品标识=0002'按兰特订购…
我做错了什么?
$filter\u string
添加了”
,因为您把它放在了那里:P
请尝试在$filter\u string
周围加上双引号:
$sql_more_items = $db->query("SELECT * FROM db_products WHERE owner_id='" . $user_id . "' AND active=1 " . $filter_string . "ORDER BY RAND() LIMIT 10");
$filter\u string
添加了”
,因为您将其放在了那里:P
请尝试在$filter\u string
周围加上双引号:
$sql_more_items = $db->query("SELECT * FROM db_products WHERE owner_id='" . $user_id . "' AND active=1 " . $filter_string . "ORDER BY RAND() LIMIT 10");
那可能是因为这个角色
`"' AND active=1 '"`
^.... This ' here
那可能是因为这个角色
`"' AND active=1 '"`
^.... This ' here
检查执行字符串连接(组合字符串)的方式。当您使用“”而不是仅使用“”时,似乎出现了复制/粘贴错误
我会使用空白(和一个好的代码编辑器),通过将代码重新格式化为如下所示,为您带来好处:
while ($all_products = $db->fetch_array($all_prods))
{
$filter_string .= 'AND product_id !=';
$filter_string .= $all_products['item_id'];
$filter_string .= ' ';
}
$sql_more_items = $db->query("SELECT * FROM db_products
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "'
ORDER BY RAND() LIMIT 10");
$queryString = "SELECT * FROM db_products WHERE owner_id='$user_id'"
." AND active=1 " //Note these
. $filter_string //are separated
. "ORDER BY RAND() LIMIT 10 "; //into individual lines
$sql_more_items = $db->query($queryString);
这种风格有助于跟踪字符串是否使用“或”,也有助于比将其放入一个巨大的难读字符串更容易调试
检查您执行字符串连接(组合字符串)的方式。当您使用“”而不仅仅是“”时,似乎出现了复制/粘贴错误
我会使用空白(和一个好的代码编辑器),通过将代码重新格式化为如下所示,为您带来好处:
while ($all_products = $db->fetch_array($all_prods))
{
$filter_string .= 'AND product_id !=';
$filter_string .= $all_products['item_id'];
$filter_string .= ' ';
}
$sql_more_items = $db->query("SELECT * FROM db_products
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "'
ORDER BY RAND() LIMIT 10");
$queryString = "SELECT * FROM db_products WHERE owner_id='$user_id'"
." AND active=1 " //Note these
. $filter_string //are separated
. "ORDER BY RAND() LIMIT 10 "; //into individual lines
$sql_more_items = $db->query($queryString);
这种风格有助于您跟踪字符串是否使用“或”,也有助于您比将其放入一个巨大的难读字符串中更轻松地调试东西。Doh!谢谢:)很快就要睡觉了:P@user1227914或者更多的咖啡!:)你愿意接受我的回答吗?他不能,除非15分钟过去,耐心点+我很感谢你这么快就抓住了它。是的,马上就好了……它告诉我要等10分钟。别担心:)@user1227914 B-)谢谢你,朋友!啊!谢谢:)很快就要睡觉了:P@user1227914或者更多的咖啡!:)你愿意接受我的回答吗?他不能,除非15分钟过去,耐心点+我很感谢你这么快就抓住了它。是的,马上就好了……它告诉我要等10分钟。别担心:)@user1227914 B-)谢谢你,朋友!