mySQLi PHP Parse错误:语法错误

时间:2017-04-12 04:19:35

标签: php mysqli

我有这个mySQLi代码并且它给了我错误...一直盯着它看了一个小时我无法弄清楚为什么它的错误。求救!

解析错误:第24行的C:\ AppServ \ www \ myMovieDB \ UpdateMovie.php中的语法错误,意外的''(T_ENCAPSED_AND_WHITESPACE),期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)

$sql = "UPDATE movie SET `name` = "$_POST[title]", `release` = "$_POST[movie_release]", synopsis = "$_POST[synopsis]"
WHERE `name = '$_POST['movie_to_change']'";

3 个答案:

答案 0 :(得分:3)

不要在查询中直接使用$_POST,这可能会导致SQL注入。您必须使用mysqli_real_escape_string(mysqli $link , string $escapestr )来清理变量Like:

$title  = mysqli_real_escape_string($connection_link ,$_POST['title']);
$movie_release  = mysqli_real_escape_string($connection_link ,$_POST['movie_release']);
$synopsis  = mysqli_real_escape_string($connection_link ,$_POST['synopsis']);
$movie_to_change  = mysqli_real_escape_string($connection_link ,$_POST['movie_to_change']);

然后你的查询将是:

$sql = "UPDATE movie SET 
            `name` = '$title', 
            `release` = '$movie_release', 
            `synopsis` = '$synopsis'
            WHERE 
            `name` = '$movie_to_change'";

您可以使用正确的连接运算符(。)句点直接在查询中使用$_POST变量。但是,如果您像我一样将$_POST变量与查询内部的直接访问分开,它将阻止您进行连接混淆。

答案 1 :(得分:0)

您缺少逗号

$sql = "UPDATE movie SET name = '".$_POST['title']."', release = 
       '".$_POST['movie_release']."', synopsis = '".$_POST['synopsis']."'
        WHERE name = '".$_POST['movie_to_change'].'";

答案 2 :(得分:0)

您尚未创建正确的SQL字符串。请尝试使用以下字符串

$sql = "UPDATE movie SET `name` = ".$_POST['title'].", `release` = ".$_POST['movie_release'].", `synopsis` = ".$_POST['synopsis']."
WHERE `name` = ".$_POST['movie_to_change'];