Php 在重复密钥更新错误时插入到

Php 在重复密钥更新错误时插入到,php,mysql,Php,Mysql,我使用php表单向导在表单提交上更新mysql数据库。PHP表单向导只插入到,所以我搜索了internet,找到了on replicate KEY UPDATE命令。但是,我无法为我的查询获取正确的语法。请注意,插入操作非常有效。 只是在尝试更新部分。任何帮助都将不胜感激。查询如下 @$pfw_strQuery = "INSERT INTO `client`(`client_id`,`email`,`first_name`,`last_name`,`first_time`,`password`

我使用php表单向导在表单提交上更新mysql数据库。PHP表单向导只插入到,所以我搜索了internet,找到了on replicate KEY UPDATE命令。但是,我无法为我的查询获取正确的语法。请注意,插入操作非常有效。 只是在尝试更新部分。任何帮助都将不胜感激。查询如下

@$pfw_strQuery = "INSERT INTO  `client`(`client_id`,`email`,`first_name`,`last_name`,`first_time`,`password`)VALUES (\"$client_id\",\"$email\",\"$first_name\",\"$last_name\",\"$first_time\",\"$textfield\") ON DUPLICATE KEY UPDATE `email` = VALUES(\"$email\"),`first_name` = VALUES(\"$first_name\"),`last_name` = VALUES(\"$last_name\"),`first_time` = VALUES (\"$first_time\"),`password` = VALUES (\"$textfield\") ";
回顾历史。如果要使用该子句中的PHP变量,请删除
ON DUPLICATE KEY
子句中的
VALUES()
附件

$pfw_strQuery = "INSERT INTO  `client` (`client_id`,`email`,`first_name`,`last_name`,`first_time`,`password`)
  VALUES ('$client_id','$email','$first_name','$last_name','$first_time','$textfield')
  ON DUPLICATE KEY UPDATE
    `email` = '$email',
    `first_name` = '$first_name',
    `last_name` = '$last_name',
    `first_time` = '$first_time',
    `password` = '$textfield' ";
如果使用的是
VALUES()
附件,则属于其中的是列名,而不是输入变量

您可以使用UPDATE子句中的VALUES(col_name)函数引用INSERT中INSERT部分的列值。。。更新语句

注意,我已经用单引号替换了所有转义的双引号。虽然MySQL支持字符串文本的双引号,但单引号更标准,可以跨其他RDBMS移植

我们假设所有这些变量都已针对SQL注入正确转义。最后,您可能知道,旧的
mysql_*()
函数计划弃用。建议切换到较新的API,如MySQLi或PDO,它们支持预处理语句和参数化查询,完全避免转义和引用问题。

查看。如果要使用该子句中的PHP变量,请删除
ON DUPLICATE KEY
子句中的
VALUES()
附件

$pfw_strQuery = "INSERT INTO  `client` (`client_id`,`email`,`first_name`,`last_name`,`first_time`,`password`)
  VALUES ('$client_id','$email','$first_name','$last_name','$first_time','$textfield')
  ON DUPLICATE KEY UPDATE
    `email` = '$email',
    `first_name` = '$first_name',
    `last_name` = '$last_name',
    `first_time` = '$first_time',
    `password` = '$textfield' ";
如果使用的是
VALUES()
附件,则属于其中的是列名,而不是输入变量

您可以使用UPDATE子句中的VALUES(col_name)函数引用INSERT中INSERT部分的列值。。。更新语句

注意,我已经用单引号替换了所有转义的双引号。虽然MySQL支持字符串文本的双引号,但单引号更标准,可以跨其他RDBMS移植


我们假设所有这些变量都已针对SQL注入正确转义。最后,您可能知道,旧的
mysql_*()
函数计划弃用。建议切换到较新的API,如MySQLi或PDO,它支持预处理语句和参数化查询,完全避免转义和引用问题。

@LeoStein我们假设此表中为
client\u id
。@LeoStein我们假设此表中为
client\u id
。请仔细阅读。这个例子非常令人担忧。请仔细阅读。这个例子非常令人担忧。