PHP:无法将单引号字符串传递给mysqli查询
我为这件简单的事情奋斗了几个小时:PHP:无法将单引号字符串传递给mysqli查询,php,Php,我为这件简单的事情奋斗了几个小时: $var=var; $result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' "; 我得到的错误是:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“\'var\”附近使用的正确语法 名称是正确的,它在mysql查询中工作。我想我试过了所有可能的报价选项,怎么了 更新:根据请求,我使用了转义,但错误保持不变 $var=var; $var = $
$var=var;
$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' ";
我得到的错误是:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“\'var\”附近使用的正确语法
名称是正确的,它在mysql查询中工作。我想我试过了所有可能的报价选项,怎么了
更新:根据请求,我使用了转义,但错误保持不变
$var=var;
$var = $conn->real_escape_string($var);
$result = "SELECT column1, column2 FROM {$db} WHERE column3 = '{$var}' ";
一定有
$var = $mysqli->real_escape_string($var);
$sql = "SELECT column1, column2 FROM {$db} WHERE column3 = '{$var}' ";
而不是:
$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' ";
$result = $mysqli->real_escape_string($result) ; //Totally wrong.
我在mysql控制台中测试了一个错误的SQL查询:
mysql> SELECT column1, column2 FROM WHERE column3 = 'varvalue';
它给出了以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE column3 = 'varvalue'' at line 1
事实上,缺少表名。我猜您的变量$db可能是null/empty/unset
请尝试:
$db = "mytable";
$var = "varvalue";
$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' ";
var
周围缺少引号。这是故意的吗?你是说在第一行?那么,var
是常数吗?如果您试图存储一个字符串,则需要在其周围加引号。目前它是常量。我将其更改为$var=“var”;同样的错误。$var=“var”
在错误消息中生成文本\'var\'
。这些\'
从何而来?给了我致命的错误:对中的非对象调用成员函数real\u escape\u string(),所以$mysqli
不是mysqli
对象的对象?我不知道,是否有一些先决条件?不,不使用WHERE过滤器的查询我不知道在MySQL查询之前是否要求您回显$result SQL字符串?回显如预期