好吧,我现在开始旋转。过多的尝试和错误使我变得脾气暴躁。无法使用重复密钥更新与PHP脚本
我想做一个插入和更新如果存在使用循环。我已经排除了这个例子中的循环代码来简化我的问题。
这里是我的PHP脚本查询:
function insertrating($ratingid, $rating){
$link = resdb::connect();
$r = mysqli_query($link, "INSERT INTO propertyrating (id,name)"
."VALUES (\'$ratingid\',\'$rating\')\n"
."ON DUPLICATE KEY UPDATE\n"
."name = VALUES (name),\n"
."description = VALUES (description)\n"
. "");
if($r > 0){
return true;
}
}
$mydbclass = new $dbclass();
$mydbclass->insertrating('3','3 Star');
表如下: ID INT 名称为varchar(100) 说明文字
我不想在此补充说明阶段。因此,该列没有参数
我已经在phpMyAdmin和MySQL控制台中生成了完全相同的查询,两者都起作用。因此,我猜测它与我的语法有关。
此外,如果我摆脱ON DUPLICATE KEY UPDATE
功能和参数它的工作。但是,显然不会更新重复的行。
请问或更正我错的地方。谢谢。
编辑:请求的SQL
INSERT INTO
propertyrating
(
id,
name
)
VALUES
(
'3',
'3 Star'
)
ON DUPLICATE KEY UPDATE
name = VALUES (name),
description = VALUES (description)
的要求UNIQUE * PK
Table is as follows:
ID int唯一和主键 名VARCHAR(100) 说明文字
OK GUYS返回错误:
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 'UPDATEname = name,description = description
正如你所看到的,UPDATE和name之间没有空格(它读取UPDATENAME),我添加了一个字符空间,现在都是肉汁。
非常感谢让我mysqli_error($link)
不知道如何给答案zerkms但你都导致我在正确的方向,第一。
代码现在站立为:
$r = mysqli_query($link, "INSERT INTO propertyrating (id,name)"
."VALUES (\'$ratingid\',\'$rating\')\n"
."ON DUPLICATE KEY UPDATE\n"
."name = VALUES (name),\n"
."description = VALUES (description)\n"
. "") or die("Error: ".mysqli_error($link));
用空格替换`\ n`并向我们显示**脚本生成的纯sql查询**(没有任何php代码)。 – zerkms 2011-02-11 02:26:32
``mysqli_error($ link)``mysqli_query`后面呢? – zerkms 2011-02-11 02:35:30