将mysql结果放在一个数组中

Posted

技术标签:

【中文标题】将mysql结果放在一个数组中【英文标题】:Place mysql results in an array 【发布时间】: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 【参考方案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.""; 告诉我你得到了什么

以上是关于将mysql结果放在一个数组中的主要内容,如果未能解决你的问题,请参考以下文章

Mysqli - 将结果绑定到数组

将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次

给定一个数跟数组,将小于等于该数的数组元素放在左边,将大于该数的数组元素放在右边

java中怎么将1个数组的数其中偶数放在b1数组里,奇数放在b2数组里?

将多个结果放在一个数组中

如何用php直接将SQL的查询结果变成一个数组?