簡體   English   中英

使用WHERE子句將PHP數組插入MySQL

[英]Insert PHP Array Into MySQL With WHERE Clause

我已經讀過使用WHERE子句將數組傳遞給查詢的方法 ,這基本上是我正在做的事情,但是使用字符串而不是整數。 我的WHERE子句有問題。

$codes_imp = "'" . implode("','", $codes) . "'";
$passwords_imp = "'" . implode("','", $passwords) . "'";
$comments_imp = "'" . implode("','", $comments) . "'";

$set_pass_query = "INSERT INTO users (password, comments) VALUES ($passwords_imp, $comments_imp) WHERE Code IN ($codes_imp)";

執行后,查詢如下所示:

INSERT INTO users (password, comments) 
VALUES ('password1', 'password2', 'password3', 'comment1', 'comment2', 'comment3') 
WHERE Code IN ('code1', 'code2', 'code3')

表中的所有列均為VARCHAR類型。 顯然,我有一個語法錯誤(正告訴我),但是我不確定如何正確地構造它。

您正在嘗試使用WHERE子句約束INSERT查詢。 那是很大的禁忌。

您想UPDATE ,或者需要刪除WHERE

您到底想完成什么?

您需要使用UPDATE而不是INSERT來更改現有的數據庫行。 您可以使用像foreach循環這樣的循環構造。 例如:

foreach($codes_imp as $key=>$code){
   $query="UPDATE users SET password='$passwords_imp[$key]', comments='$comments_imp[$key]' WHERE Code='$code'"
   [Code to execute the query goes here]
}

注意:我們需要使用循環構造,因為UPDATE查詢一次只能在一個數據庫行上運行。

替代方法:

除了使用循環外,還可以在Mysql中使用CASE WHEN ELSE END語法。
要了解如何使用此功能,請參閱:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM