我有一个如下所示的数据库:
Name | WebsitePrice | WebsiteStock |
-----------------------------------------
football | 20 | Yes |
-----------------------------------------
basketball | 10 | No |
-----------------------------------------
hockey | 30 | Yes |
-----------------------------------------
我想为每个项目创建2个变量:
这是我提出的最短路:
$item1 = "football";
$item2 = "basketball";
$item3 = "tennis-ball";
$productList = array();
$products = $mysqli->query("select * from table_products where Name IN ('$item1', '$item2', '$item3')");
if($products){
while($product = mysqli_fetch_assoc($products)){
$productList[$product['Name']]['WebsitePrice'] = $product['WebsitePrice'];
$productList[$product['Name']]['WebsiteStock'] = $product['WebsiteStock'];
}
}
//first product:
$price1 = $productList[$item1]['WebsitePrice'];
$stock1 = $productList[$item1]['WebsiteStock'];
//second product:
$price2 = $productList[$item2]['WebsitePrice'];
$stock2 = $productList[$item2]['WebsiteStock'];
//third product:
$price3 = $productList[$item3]['WebsitePrice'];
$stock3 = $productList[$item3]['WebsiteStock'];
对我来说看起来很混乱。 有没有更好的方法来做到这一点?特别是如果我们假设我可能有20个项目而不仅仅是3个。
例如,有没有办法跳过编写整个('$item1', '$item2', '$item3')
行并使该行引用第一个代码块中定义的项目数?
答案 0 :(得分:1)
如果要直接从数据库回显字段,请为字段指定别名,如:
SELECT Name, WebsitePrice as PriceOfItem, WebsiteStock as StockOfItem from table_products where Name IN ('$item1', '$item2', '$item3')
答案 1 :(得分:1)
以下是我将代码更改为动态代码的方法:
<?php
$con = mysqli_connect("localhost","test_user","user1234","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//turn items into an array
$item_array = array('football','basketball','tennis-ball');
//implode items, turn into string
//result for this string is football','basketball','tennis-ball
$item_implode = join("','", $item_array);
//declare an overall array for result
$product_items = array();
$productList = array();
$result = $con->query("select * from table_products where Name IN ('$item_implode')");
if ($result->num_rows > 0) {
$x = 0;
// output data of each row
while($row = $result->fetch_assoc()) {
$product_items[$x]["Name"] = $row['Name'];
$product_items[$x]["WebsitePrice"] = $row['WebsitePrice'];
$product_items[$x]["WebsiteStock"] = $row['WebsiteStock'];
$x = $x + 1;
}
} else {
echo "0 results";
}
//can access data by $product_items[index][attribute]
//prints all
for ($i=0; $i < count($product_items); $i++) {
echo $product_items[$i]["Name"] . " - ";
echo $product_items[$i]["WebsitePrice"] . " - ";
echo $product_items[$i]["WebsiteStock"] . "<br/>";
}
?>
结果应为:
football - 20 - Yes
basketball - 10 - No
您可以通过添加/附加到$ item_array来添加项目。