【问题标题】:Place mysql results in an array将mysql结果放在一个数组中
【发布时间】:2016-11-06 22:54:32
【问题描述】:

我有一个包含产品名称及其对应数量的表格。

Product      Quantity      Delete
  A             10          Del
  B              5          Del

我想要做的是将它们放在具有产品相应 id 的数组中。我可以获得第二个产品的产品 ID,但我无法获得第一个产品的 ID。我该如何解决?

这是 php 代码的输入表单:

<table> 
   <tr>
       <td><input id="product1" type="text" value="A" name="product1"></td>
       <td><input id="quantity1" type="text" value="10" name="quantity1>
           <input type='hidden' name='htmlrow[]' value='1'> </td> //row number
   </tr>
   <tr>
       <td><input id="product2" type="text" value="B" name="product2"></td>
       <td><input id="quantity2" type="text" value="5" name="quantity2">
           <input type='hidden' name='htmlrow[]' value='2'></td>//row number
   </tr>
</table>

php代码:

$numberOfRows = $_POST["htmlrow"];
$r = end($numberOfRows);
for($i=1; $i<$r+1; $i++){  //r = number of rows
    $results = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'");     

       foreach($results as $product){
              $pID = $product->productID;
       } //I can only get the last product ID

       $orderItem = array(
                        'product' => $_POST["product".$i],
                        'productID' => $pID,
                        'quantity' => $_POST["quantity".$i]
                     );

       $order[] = $orderItem;
  }

【问题讨论】:

  • 请在$i&lt;$r+1中解释$r
  • 您向我们展示的html 代码的目的是什么?
  • html代码是什么,是输入还是输出? php执行之前还是之后?
  • php 执行前。
  • 你想在你的$order 中写两行,是吗?那你为什么有两个循环,一个for和一个foreach

标签: php mysql arrays wordpress


【解决方案1】:

数组从 0 开始,而不是从 1。当您将值 1 分配给 $i 时,循环将从行中的第二个元素开始。播种解决方案是这样的。

for($i=0; $i<$r+1; $i++){  //r = number of rows
    $results = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'");     

       foreach($results as $product){
              $pID = $product->productID;
       } //I can only get the last product ID

       $orderItem = array(
                        'product' => $_POST["product".$i],
                        'productID' => $pID,
                        'quantity' => $_POST["quantity".$i]
                     );

       $order[] = $orderItem;
  }

这是一个例子。假设我们有一个数组 $test

$test = array("A","B","C","D");

数组的第一个元素是“A”,“A”在位置 0。“B”在位置 1,依此类推。

在您的 foreach 循环中,您有 $pID var 来保存您的产品“ID”,因此 $pID 总是会包含 $results 中的最后一个元素。您必须将 $orderItem 数组放入您的 foreach 循环中。

foreach($results as $product){
       $pID = $product->productID;
       $orderItem = array(
                        'product' => $_POST["product".$i],
                        'productID' => $pID,
                        'quantity' => $_POST["quantity".$i]
       );
       $order[] = $orderItem;
}

或者你可以试试这个

$results[$i] = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'", ARRAY_A);

print_r($results);

【讨论】:

  • 我输入的 id 是 product1, product2。这就是我从 1 开始的原因。即使我从 0 开始,我仍然没有得到第一个产品 ID。
  • 您的数据库中的产品名称类似于“product1”、“product2”或“productA”、“productB”还是简单的“A”、“B”?
  • $r 是行数。在我的数据库中只有 A、B。
  • 你能在 foreach 循环中回显 $pID 吗? foreach($results as $product){ $pID = $product->productID; echo $pID."
    "; }
  • 告诉我你得到了什么
猜你喜欢
  • 2015-02-09
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2014-11-05
  • 2016-04-03
相关资源
最近更新 更多