亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PDO SELECT 僅在 foreach 循環中選擇第一個

PDO SELECT 僅在 foreach 循環中選擇第一個

PHP
慕婉清6462132 2023-06-24 15:39:26
我正在嘗試從數據庫中選擇多個產品并將 id 插入到另一個表中。我嘗試如下執行,如果我只是 echo $name,$_POST["txtMaterial"][$key]并且$_POST["txtSize"][$key]在查詢之前,我會獲取所有選定的名稱、材料和尺寸,但是當我綁定查詢中的值時,我只得到第一個。    foreach($_POST["txtName"] as $key => $name){      $sQuery = $db->prepare('SELECT id FROM products WHERE name = :sName AND material = :sMaterial AND size = :sSize');      $sQuery->bindValue(':sName', $name);      $sQuery->bindValue(':sMaterial', $_POST["txtMaterial"][$key]);      $sQuery->bindValue(':sSize', $_POST["txtSize"][$key]);      $sQuery->execute();      $aOrders = $sQuery->fetchAll();      foreach($aOrders as $aOrder){        echo print_r($aOrders);      }}的 print_r$aOrders是這樣的:"Array(    [id] => 174)1"這是我需要的第一個 id。誰能幫我看看如何獲取所有的 id?$_POST["txtName"]foreach之前的var_dump :"array(50) {  [0]=>  string(0) ""  [1]=>  string(6) "BACURI"  [2]=>  string(0) ""  [3]=>  string(0) ""  [4]=>  string(0) ""  [5]=>  string(0) ""  [6]=>  string(0) ""  [7]=>  string(0) ""  [8]=>  string(0) ""  [9]=>  string(0) ""  [10]=>  string(0) ""  [11]=>  string(0) ""  [12]=>  string(0) ""  [13]=>  string(0) ""  [14]=>  string(0) ""  [15]=>  string(0) ""  [16]=>  string(0) ""  [17]=>  string(0) ""  [18]=>  string(0) ""  [19]=>  string(0) ""  [20]=>  string(0) ""  [21]=>  string(0) ""  [22]=>  string(0) ""  [23]=>  string(0) ""  [24]=>  string(0) ""  [25]=>  string(0) ""  [26]=>  string(0) ""  [27]=>  string(0) ""  [28]=>  string(0) ""  [29]=>  string(6) "CAJARI"  [30]=>  string(0) ""  [31]=>  string(0) ""  [32]=>  string(0) ""  [33]=>  string(0) ""  [34]=>  string(0) ""  [35]=>  string(0) ""  [36]=>  string(0) ""  [37]=>  string(0) ""  [38]=>  string(0) ""  [39]=>  string(0) ""  [40]=>  string(0) ""  [41]=>  string(0) ""  [42]=>  string(0) ""  [43]=>  string(0) ""  [44]=>  string(0) ""  [45]=>  string(0) ""  [46]=>  string(0) ""  [47]=>  string(0) ""  [48]=>  string(0) ""  [49]=>  string(0) ""}"foreach之前的var_dump $_POST["txtMaterial"]:"array(2) {  [0]=>  string(1) "3"  [1]=>  string(1) "2"}
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

根據提供的信息,您將獲得一條記錄ID,因為您準備語句且該語句不為空的唯一時間是循環的第二次迭代。關聯數組中只有 2 個鍵,txtMaterial并且txtSize,接下來的任何鍵都將返回 null??纯催@里:


第一個循環 您準備好的語句將如下所示:


SELECT id FROM products WHERE name = "" AND material = 3 AND size = 20

該語句將返回一個empty數組


第二個循環


SELECT id FROM products WHERE name = "BACURI" AND material = 2 AND size = 4

這最終會得到你得到的結果。具有一條記錄的數組ID = 174。


任何下一次迭代...


SELECT id FROM products WHERE name = "" AND material = NULL AND size = NULL

這將返回一個empty數組


這是測試:


$name = ["", "BACURI", ""];

$material = ["3", "2"];

$size = ["20", "4"];


foreach($name as $key => $val){

    echo "\n";

    var_dump($val);

    var_dump($material[$key]);

    var_dump($size[$key]);

}

輸出


string(0) ""

string(1) "3"

string(2) "20"


string(6) "BACURI"

string(1) "2"

string(1) "4"


string(0) ""

NULL

NULL

希望能幫助到你。


查看完整回答
反對 回復 2023-06-24
  • 1 回答
  • 0 關注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號