我在数据库中有两个表(table_1
和table_2
),每个表都有一个称为Name
的共同列。
我目前正在使用以下代码仅从Name
导入一些数据(status
,table_1
):
/* database section start */
$mysqli = new mysqli("z","z","z","z");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* database section end */
// Choose Relevant items, and turn them into an array
$item_array = array(
'item1',
'item2',
'item3'
);
//implode items, turn into string
$item_implode = join("','", $item_array);
//declare an overall array for result
$product = array();
$result = $mysqli->query("SELECT Name, Status as status from table_1 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode');");
while($row = $result->fetch_assoc()) {
$product_name = $row['Name'];
// find all keys in $item_array which value is the products
$keys = array_keys($item_array, $product_name);
foreach ($keys as $key) {
// add values for these keys
$product[$key + 1]["Name"] = $row['Name'];
$product[$key + 1]["status"] = $row['status'];//
}
}
我也想从
table_2
导入数据(例如,名为color
,date_added
的列)我的目标是拥有这些键:
$product[$x]["Name"]
$product[$x]["status"]
$product[$x]["color"]
$product[$x]["date_added"]
我已经尝试过以这种形式使用UNION,但在最后一行收到致命错误:
$result = $mysqli->query
("(SELECT Name, status as status from table_1 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode') )
UNION (SELECT color from table_2 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode') );");
while($row = $result->fetch_assoc()) {
编辑:
表格1:
+-------+-------------+------+-----+---------+----------------+
| Name | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Name | varchar(100)| NO | | None | |
| status| varchar(5) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
表_2:
+-------+-------------+------+-----+---------+----------------+
| Name | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Name | varchar(100)| YES | | NULL | |
| color | varchar(5) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
更新:
尝试使用此:
$result = $mysqli->query
("SELECT Name, status as status, color as color table_1
JOIN table_2 ON table_1.Name=table_2.Name
WHERE table_1.Name IN ('$item_implode')
ORDER BY FIELD (table_1.Name, '$item_implode') ;" );
while($row = $result->fetch_assoc()) {
并得到
致命错误:在非对象上调用成员函数fetch_assoc()
最佳答案
首先,那些mysqli连接参数是什么?
他们应该像-> $conn = new mysqli($servername, $username, $password, $dbname);
第二,UNION结合了两个或多个SELECT语句的结果,最有可能需要的是Join Query!
就像
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
关于php - UNION与Where-发生致命错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38350160/