PHP MYSQL 中的意外 '' (T_ENCAPSED_AND_WHITESPACE)、期望标识符 (T_STRING) 或变量 (T_VARIABLE) 或数字 (T_NUM_STRING)

unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in PHP MYSQL

当我 运行 代码时出现上述错误。请告诉我哪里做错了。

我正在尝试获取值并使用 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_query() 执行插入查询。

请使用 mysqli_query() 而不是 mysql_query() 来执行插入查询。

mysql_query("INSERT INTO comments VALUES ('$jsonDb[name]','$jsonDb[email]','$jsonDb[website]','$jsonDb[comment]','$jsonDb[rate]')");

这就是它应该的样子。

正如其他人指出的那样,在这种情况下您需要使用 mysqli_query 而不是 mysql_query

还有一些建议:

  1. 在您的查询字符串中使用大字符串连接时,所有单引号和双引号都会变得难以阅读并且容易出错。另一种选择是使用花括号进行插值,尽管这主要是一种风格选择:
"INSERT INTO comments VALUES ('{$jsonDb['name']}', '{$jsonDb['email']}', 
    '{$jsonDb['website']}', '{$jsonDb['comment']}', '{$jsonDb['rate']}')"
  1. 此代码易受 sql 注入攻击。与其使用查询的字符串连接将变量插入数据库,不如使用 prepared statements.
  2. 更安全