2012-01-03 86 views
1
mysql_query ("INSERT INTO `items` (`item_did_sell`, `sold_for`, `bought_by_paddle`) 
       SELECT ('1','{$sold_for}','{$paddle_number}') 
       FROM `items` WHERE index_number={$index_number}") or die('error!!!' . mysql_error()); 

即時得到這個錯誤:條件INSERT MySQL查詢錯誤

error!!!Operand should contain 1 column(s) 

而且我不明白爲什麼。

感謝您的幫助!

編輯:這是與PHP的VAR提供的測試值替換爲:

mysql_query ("INSERT INTO `items` (`item_did_sell`, `sold_for`, `bought_by_paddle`) 
       SELECT ('1','2500','111') 
       FROM `items` WHERE index_number=555") or die('error!!!' . mysql_error()); 
+0

爲什麼在您的值附近有'{...}'? – drdwilcox 2012-01-03 22:52:51

+0

他們是php變量 – lampwins 2012-01-03 22:53:21

+0

您可能會用變量的值打印出SQL語句。如果這還沒有直接顯示你的問題,至少它會讓我們更容易找到任何東西。 – Nicolas78 2012-01-03 22:53:41

回答

2

SELECT語法沒有括號()周圍的名單。

SELECT列表中刪除他們:

mysql_query ("INSERT INTO `items` (`item_did_sell`, `sold_for`, `bought_by_paddle`) 
       SELECT '1','{$sold_for}','{$paddle_number}' 
       FROM `items` WHERE index_number={$index_number}") 
    or die('error!!!' . mysql_error()); 

如果,另一方面,你要更新現有行有index_number={$index_number},使用UPDATE(因爲我從評論明白)

mysql_query ("UPDATE `items` 
       SET `item_did_sell` = '1', 
        `sold_for` = '{$sold_for}', 
        `bought_by_paddle` {$paddle_number} 
       WHERE index_number={$index_number}") 
    or die('error!!!' . mysql_error()); 
+0

謝謝你,這個伎倆!但是,你能向我解釋爲什麼你不使用括號嗎?我想知道爲什麼我做錯了什麼。 – lampwins 2012-01-03 22:58:23

+0

你是否起訴你想'INSERT'而不是'UPDATE'的方式? – 2012-01-03 22:59:44

+0

當「item」被插入表中時,默認情況下,'item_did_sell','sold_for'和'buy_by_paddle'都被設置爲NULL。在這個查詢的運行時間,該信息被添加到表中。在這種情況下使用UPDATE會更好嗎?我是高中的初中,只是進入MySQL和PHP,所以這都是一種學習體驗。 – lampwins 2012-01-03 23:04:36