【发布时间】:2021-06-17 04:21:47
【问题描述】:
我是新手,所以我想知道我所问的是否可行。
我有一个返回 While 循环的 SQl Select 查询,我将结果(人名)转换为 php 数组。
在同一页面上的另一个 SQL 查询中,我需要使用 SQL SELECT 获取每个名称的地址。
我已经回显了 json_encode($name_arr) 并查看了所有三个名称,因此我知道我的名称数组在第一个 SQL 查询中有效。
我曾尝试使用 implode(),但我得到了一个名称的一个结果,而不是所有三个名称或什么都没有。
感谢您的帮助。
Array Result = 3 records found.
Array=
id Name
1 John
2 Mike
3 Jane
**Get names script**
$sql = "SELECT names FROM directory WHERE age = '33' ";
$result = $conn->query($sql);
if ($conn->query($sql) === FALSE) {
echo"error";
die();
} else if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
$name = "". $row['name']."";
$name_arr = array( "name" => $name);
}}
**Get address script**
$sql = "SELECT * FROM address WHERE name IN ('".implode("','",$name_arr "') ";
$result = $conn->query($sql);
//Check if it failed to do above
if ($conn->query($sql) === FALSE) {
echo"error";
die();
} else if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
$street = "". $row['street']."";
$postcode = "". $row['postcode']."";
$city = "". $row['city']."";
$address_arr[] = array(
"street" => $street,
"postcode" => $postcode,
"city" => $city);
}
echo json_encode($address_arr);
exit();
}
【问题讨论】:
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
感谢您的发布或上线。我将使用 PDO 代码会改变。
-
感谢您使用 PDO。在实践中要好得多。
-
您可以通过在 SQL 中使用 JOIN 来通过单个查询完成所有这些操作。