gpt4 book ai didi

php - 将 mysql 函数转换为 mysqli 准备好的语句并保持相同的输出

转载 作者:行者123 更新时间:2023-11-29 22:08:36 24 4
gpt4 key购买 nike

我目前正在彻底检查一个站点,并替换所有用于返回 mysql_fectch_array() 结果的函数,这些函数被放入其他地方的 while 循环中。我试图让它们以相同的格式返回相同的数据,但使用 mysqli 准备好的语句输出。我已经成功地使用下面的代码为单行结果生成了相同格式的输出。

public function get_email_settings(){
$stmt = $this->cn->stmt_init();
$stmt->prepare("SELECT * FROM email_setting WHERE user_id = ? LIMIT 1");
$stmt->bind_param("i", $this->user);
$stmt->execute();
$stmt->bind_result(
$row['email_id'],
$row['user_id'],
$row['news'],
$row['new_message'],
$row['new_friend'],
$row['rule_assent'],
$row['agreement_ready'],
$row['agreement_all_assent'],
$row['time_cap'],
$row['donations']
);
$stmt->store_result();
$stmt->fetch();
$stmt->close();
return $row;
}

但是当这段代码返回多行时,如何才能使其工作呢?我希望它产生与我编写的结果相同的结果:

返回 mysql_fetch_array($result);

可能吗?

最佳答案

考虑以下调整,将查询结果传递到关联数组中:

public function get_email_settings(){
$stmt = $this->cn->stmt_init();
$stmt->prepare("SELECT email_id, user_id, news, new_message,
new_friend, rule_assent, agreement_ready,
agreement_all_assent, time_cap, donations
FROM email_setting
WHERE user_id = ? ");
$stmt->bind_param("i", $this->user);
$stmt->execute();

// CREATE RETURN ARRAY
$row = [];
// OBTAIN QUERY RESULTS
$result = $stmt->get_result();
// ITERATE THROUGH RESULT ROWS INTO RETURN ARRAY
while ($data = $stmt->fetch_assoc()) {
$row[] = $data;
}

$stmt->close();
return $row;

}

您会注意到我显式选择查询的字段以避免查询结果的不确定循环。

关于php - 将 mysql 函数转换为 mysqli 准备好的语句并保持相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905825/

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