gpt4 book ai didi

php - 从mysql数据库获取多维数组

转载 作者:搜寻专家 更新时间:2023-10-31 21:09:00 25 4
gpt4 key购买 nike

我现在正在使用 Mysqli从 Mysql 数据库中检索数据,我使用的代码很难理解,据我所知,它的功能已贬值或本身已贬值。如果我可以从 mysql 数据库检索数据的 Qoal 中获得一些见解,也许还有一些更新的技术。

mysqli prepared statements

我目前的情况是这样的:

$param = 1;
$mysqli = new mysqli("127.0.0.1", "user", "password", "databaseName");
$mysqli->query('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$mysqli->bind_param('i',$param)
$mysqli->execute();
$row = bind_result_array($mysqli);

while($mysqli->fetch()){
$set[$row['']] = getCopy($row);
}
$mysqli->free_result();
return $set;




function bind_result_array($stmt)
{
$meta = $stmt->result_metadata();
$result = array();
while ($field = $meta->fetch_field())
{
$result[$field->name] = NULL;
$params[] = &$result[$field->name];
}

call_user_func_array(array($stmt, 'bind_result'), $params);
return $result;
}

function getCopy($row)
{
return array_map(create_function('$a', 'return $a;'), $row);
}

最佳答案

您需要先清理对数据库的调用。 $mysqli->query 已在您绑定(bind)参数等之前发送查询。

替换为以下内容;

$stmt = $mysqli->prepare('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$stmt->bind_param('i',$param)
$stmt->execute();

$mysqli->prepare 返回一个新对象,您应该将值绑定(bind)到该对象然后执行。它避免了 SQL injection !

这些都没有折旧。 mysqli_ 正是您应该使用的。

由于您只需要一个结果数组,因此您可以使用以下代码来实现 - 无需用户函数。

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$set[] = $row['reply_id'];
}

对于 while 中的每一行,每个字段都保存到一个以列名为键的数组中。所以 $row['reply_id'] 包含数据库中 reply_id 列的值。在上面,我将这个值保存到一个名为 $set 的数组中,当它循环遍历下一个结果行时,它也会将下一个值保存到该数组中。

您可以根据需要在将结果保存到新数组之前或之后对其进行操作。

希望这对您有所帮助。

关于php - 从mysql数据库获取多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com