![](/img/trans.png)
[英]Why is constructing a URL with a mysql entry in PHP giving me a different String?
[英]Why is this PHP / mySQL query giving me an error?
我正在生成查询的第一部分,如下所示:
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");
但是它给了我一个MySQL的语法错误和$filter_string
部分奇怪增加'
前和后弦的两倍,因此它运行是这样的:
WHERE user_id='12345' AND active=1 'AND product_id !=0001 AND product_id !=0002 ' ORDER BY RAND ...
我究竟做错了什么?
$filter_string
添加'
因为您将其放置在此处。 :P
尝试仅使用$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");
$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);
这种样式可以帮助您跟踪是否在字符串中使用了“”或“”,并且比将其放入难以阅读的巨型字符串中更容易调试。
那可能是因为
`"' AND active=1 '"`
^.... This ' here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.