意想不到的'' (T_ENCAPSED_AND_WHITESPACE),期望PHP MYSQL中的标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)

时间:2015-04-19 17:29:02

标签: javascript php mysql ajax mysqli

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

我试图获取值并使用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;




?>

3 个答案:

答案 0 :(得分:1)

您已使用mysqli连接数据库,但使用mysql_query()执行插入查询。

请使用mysqli_query()代替mysql_query()来执行插入查询。

答案 1 :(得分:0)

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

这应该是它的样子。

答案 2 :(得分:0)

正如其他人所指出的那样,在这种情况下你需要使用mysqli_query代替mysql_query

还有一些建议:

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