Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL更新语法错误-一切正常吗?_Php_Mysql - Fatal编程技术网

Php MySQL更新语法错误-一切正常吗?

Php MySQL更新语法错误-一切正常吗?,php,mysql,Php,Mysql,我在PHP中的更新查询出错。。。我见过别人的错误,我几乎可以肯定我没有犯同样的错误,但我可能忽略了一个 这是我的代码: $sQuery = "UPDATE clientes SET Nombre = '$_POST[Nombre]', Apellidos = '$_POST[Apellidos]', Telefono = '$_POST[Telefono]', Email = '$_POST[Em

我在PHP中的更新查询出错。。。我见过别人的错误,我几乎可以肯定我没有犯同样的错误,但我可能忽略了一个

这是我的代码:

$sQuery = "UPDATE clientes 
        SET 
          Nombre = '$_POST[Nombre]',
          Apellidos = '$_POST[Apellidos]',
          Telefono = '$_POST[Telefono]',
          Email = '$_POST[Email]',
        WHERE ID= $sIDCliente";
首先,我认为它与$POST有问题,但当我回应这个问题时,它是正确的。我得到的错误是:

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use 
near 'WHERE ID= F17DEF774C' at line 7

嗯,这就是页面输出的内容。谢谢大家:)

行中还有一个逗号

Email = '$_POST[Email]',
应该是

Email = '$_POST[Email]'
编辑:

我还应该提到,最好使用参数化查询,然后绑定参数。它使您的数据库事务更加安全

所以在你的情况下会是这样的

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("
        UPDATE clientes 
        SET 
          Nombre = ?,
          Apellidos = ?,
          Telefono = ?,
          Email = ?
        WHERE ID= ?
        ");
$stmt->bind_param('ssssd', $_POST[Nombre], $_POST[Apellidos], $_POST[Telefono], $_POST[Email], $sIDCliente);
$stmt->execute();

行中有一个额外的逗号

Email = '$_POST[Email]',
应该是

Email = '$_POST[Email]'
编辑:

我还应该提到,最好使用参数化查询,然后绑定参数。它使您的数据库事务更加安全

所以在你的情况下会是这样的

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("
        UPDATE clientes 
        SET 
          Nombre = ?,
          Apellidos = ?,
          Telefono = ?,
          Email = ?
        WHERE ID= ?
        ");
$stmt->bind_param('ssssd', $_POST[Nombre], $_POST[Apellidos], $_POST[Telefono], $_POST[Email], $sIDCliente);
$stmt->execute();

使用准备好的语句也会转义任何嵌入的引号,使用准备好的语句也会转义任何嵌入的引号