好吧,我現在開始旋轉。過多的嘗試和錯誤使我變得脾氣暴躁。無法使用重複密鑰更新與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