Javascript 意外'';(T_封装的_和_空格),应为PHP MYSQL中的标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)

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']

当我运行代码时,我得到了上面的错误。请告诉我哪里出了问题

我试图获取这些值,并用JSON对它们进行编码,然后将它们保存到数据库中。然后稍后我将从数据库中检索数据,对其进行解码,并将其发送到客户端。 下面是我的php代码

    <?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']}')"