Javascript 意外'';(T_封装的_和_空格),应为PHP MYSQL中的标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)
当我运行代码时,我得到了上面的错误。请告诉我哪里出了问题 我试图获取这些值,并用JSON对它们进行编码,然后将它们保存到数据库中。然后稍后我将从数据库中检索数据,对其进行解码,并将其发送到客户端。 下面是我的php代码Javascript 意外'';(T_封装的_和_空格),应为PHP MYSQL中的标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串),javascript,php,mysql,ajax,mysqli,Javascript,Php,Mysql,Ajax,Mysqli,当我运行代码时,我得到了上面的错误。请告诉我哪里出了问题 我试图获取这些值,并用JSON对它们进行编码,然后将它们保存到数据库中。然后稍后我将从数据库中检索数据,对其进行解码,并将其发送到客户端。 下面是我的php代码 <?php $name = $_POST['fname']; $email = $_POST['email']; $comment =$_POST['comment']; $website = $_POST ['website']
<?php
$name = $_POST['fname'];
$email = $_POST['email'];
$comment =$_POST['comment'];
$website = $_POST ['website'];
$rate = $_POST['rate'];
$conn = mysqli_connect("localhost","root","","webtech");
if(!$conn){
die("Connection Failed : ".mysqli_connect_error());
} else{
echo "Connection Succesful ";
}
$jsonDb = array
(
'name' => $name,
'email'=> $email,
'comment'=> $comment,
'website'=> $website,
'rate'=> $rate
);
$jsonArray = array
(
'name' => $name,
'email'=> $email,
'comment'=> $comment,
'website'=> $website,
'rate'=> $rate
);
$encodeDatabase = json_encode($jsonDb);
$encodeArray = json_encode($jsonArray);
mysql_query("INSERT INTO comments VALUES ("."'".$jsonDb['name']."'"."," ."'".$jsonDb['email']."'".","."'".$jsonDb['website']."'".","."'".$jsonDb['comment']."'".","."'".$jsonDb['rate']."'".")");
echo $encodeDatabase;
?>
您已使用mysqli
连接数据库,但您正在使用mysql\u query()
执行插入查询
请使用mysqli\u query()
而不是mysql\u query()
执行插入查询
mysql_query("INSERT INTO comments VALUES ('$jsonDb[name]','$jsonDb[email]','$jsonDb[website]','$jsonDb[comment]','$jsonDb[rate]')");
这就是它应该是什么样子。正如其他人所指出的,在这种情况下,您需要使用mysqli\u query
,而不是mysql\u query
还有几点建议:
在查询字符串中使用大字符串连接时,很难读取所有单引号和双引号,并且很容易出错。另一种选择是使用大括号进行插值,尽管这主要是一种风格选择:
此代码易受sql注入攻击。使用字符串连接将比使用字符串连接更安全,而不是将变量插入数据库
mysqli_connect()
,但是mysql_query()
?错误指向哪一行?不是导致错误的原因,即使是真的。确实不能将mysql_*命令与mysqli_*命令混合使用,即使这不是唯一的错误。使用字符串数组键而不引用它们会生成不必要的E_通知。另一种选择是使用大括号进行插值,因此它不是'$jsonDb[name]'
,而是'{$jsonDb['name']}'
。还要注意,在mysqli连接之后使用mysql_*函数是一个错误。更不用说这段代码容易受到sql注入的攻击。
"INSERT INTO comments VALUES ('{$jsonDb['name']}', '{$jsonDb['email']}',
'{$jsonDb['website']}', '{$jsonDb['comment']}', '{$jsonDb['rate']}')"