Php 由于撇号而导致Mysql语法错误

Php 由于撇号而导致Mysql语法错误,php,mysql,Php,Mysql,下面是我正在尝试执行的sql $get_product = 'SELECT vend_id, id_product FROM ' . _DB_PREFIX_ . 'product WHERE vend_id = ' . $payload["product"]["id"] . ' LIMIT 1'; $fetch_product = Db::getInstance()->Exe

下面是我正在尝试执行的sql

$get_product   = 'SELECT vend_id, id_product FROM '
                 . _DB_PREFIX_ . 'product WHERE vend_id = ' 
                 . $payload["product"]["id"] . ' LIMIT 1';

$fetch_product = Db::getInstance()->ExecuteS($get_product);
我得到了这个错误-

查询错误(1064):第1行“e-bf20-11eb-fc6f-4f4cf048eb57限制1”附近的语法错误

查询-

SELECT vend_id, id_product FROM product 
WHERE vend_id = 0242e39e-bf20-11eb-fc6f-4f4cf048eb57 LIMIT 1`
好像是因为撇号

他们有办法解决这个问题吗

谢谢

参数“vend_id”包含一个字符串,其值应该用引号括起来

$get_product   = 'SELECT vend_id, id_product FROM '
                 . _DB_PREFIX_ . 'product WHERE vend_id = "' 
                 . $payload["product"]["id"] . '" LIMIT 1';

改用
准备好的语句
——减轻sql注入并一次性解决类似问题。这里的问题是传入的值是一个字符串,因此它需要包含在引号内,但在sql中不是。我不知道如何在我发布的有问题的代码中使用它。当我使用$fetch\u product=Db::getInstance()->执行($get\u product)时;答案是重复的Q&AWe不知道数据库抽象代码是如何工作的。。。抱歉$product_id=$payload[“product”][“id”]$get\u product=“选择供应商id,id\u产品来源”。DB_前缀。“产品,其中供应商id=“$product_id”限制1”//我想用这个代替。你能更新代码并添加答案吗?这是一个输入错误,我们不回答输入错误。我们发表评论,然后关闭并删除问题。打字错误对其他人没有任何用处,这是SOscript的主要目的。甚至您也应该始终在
MYSQLI_uquot>或
PDO
API中使用,而不是将用户提供的值连接到查询中。