将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<$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结果放在一个数组中的主要内容,如果未能解决你的问题,请参考以下文章
将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次
给定一个数跟数组,将小于等于该数的数组元素放在左边,将大于该数的数组元素放在右边