无法使用PHP脚本使SQL Update正常工作

时间:2018-12-04 19:41:17

标签: php sql mariadb

所以我用3个输入创建了一个HTML表单。 输入为ID,以查找要更新的行。 然后主题,这是我脚本的主题(这是用PHP制作的新闻脚本)。 还有新闻,这就是应该在新闻中显示的全文。 问题是我希望能够更新现有行,因此只需“编辑我的新闻”即可。

我收到此错误:

  

删除记录时出错:您的SQL语法有错误;检查   对应于您的MariaDB服务器版本的手册   在第1行的'SET news ='adasdasd'WHERE id = 1'附近使用的语法

PHP代码:

function Person(name) {
  if (!(this instanceof Person)) return new Person(name);

  this.name = name;
}

console.log(new Person('bob'));
console.log(Person('tom'));

HTML表单代码:

`https://pastebin.com/vThb5A9W`

1 个答案:

答案 0 :(得分:-2)

您的更新语句具有多个SET表达式。您只需要一个:

$sql = "UPDATE news SET subject= '?', news= '?' WHERE id=?";

我添加的?将与准备好的语句一起使用。准备好的语句可确保您的代码不会受到SQL注入的影响。您的代码应如下所示:

$stmt = mysqli_prepare($mysqli,'UPDATE news SET subject = ?, news = ? WHERE id= ?');
mysqli_stmt_bind_param($stmt,'ssd', $subject, $news, $id);
if(mysqli_stmt_execute($stmt)){
    ...
}

资源:

https://dev.mysql.com/doc/refman/8.0/en/update.html

http://php.net/manual/en/mysqli.prepare.php

http://php.net/manual/en/mysqli-stmt.bind-param.php

http://php.net/manual/en/mysqli-stmt.execute.php

https://en.wikipedia.org/wiki/SQL_injection