ai didi

php - 在 MySQLi 中选择 * FROM

转载 作者:IT王子 更新时间:2023-10-28 23:46:04 24 4
gpt4 key购买 nike

我的网站相当广泛,我最近才切换到 PHP5(称我为大器晚成)。

我之前的所有 MySQL 查询都是这样构建的:

"SELECT * FROM tablename WHERE field1 = 'value' && field2 = 'value2'";

这使它变得非常容易、简单和友好。

出于明显的安全原因,我现在正尝试切换到 mysqli,并且我很难弄清楚当 bind_param< 时如何实现相同的 SELECT * FROM 查询 需要特定的参数。

这种说法是否已成为过去?

如果是,我该如何处理涉及大量列的查询?我真的需要每次都打出来吗?

最佳答案

我可能是错的,但对于你的问题,我觉得 bind_param() 并不是真正的问题所在。您总是需要定义一些条件,无论是直接在查询字符串本身中,还是使用 bind_param() 来设置 ? 占位符。这不是真正的问题。

我在使用 MySQLi SELECT * 查询时遇到的问题是 bind_result() 部分。这就是它变得有趣的地方。我从 Jeffrey Way 那里看到这篇文章:http://jeff-way.com/2009/05/27/tricky-prepared-statements/ (此链接不再有效)。该脚本基本上遍历结果并将它们作为数组返回——无需知道有多少列,您仍然可以使用准备好的语句。

在这种情况下,它看起来像这样:

$stmt = $mysqli->prepare(
'SELECT * FROM tablename WHERE field1 = ? AND field2 = ?');
$stmt->bind_param('ss', $value, $value2);
$stmt->execute();

然后使用站点中的代码段:

$meta = $stmt->result_metadata();

while ($field = $meta->fetch_field()) {
$parameters[] = &$row[$field->name];
}

call_user_func_array(array($stmt, 'bind_result'), $parameters);

while ($stmt->fetch()) {
foreach($row as $key => $val) {
$x[$key] = $val;
}
$results[] = $x;
}

$results 现在包含来自 SELECT * 的所有信息。到目前为止,我发现这是一个理想的解决方案。

关于php - 在 MySQLi 中选择 * FROM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/750648/

24 4 0
文章推荐: mysql - 索引和外键有什么区别?
文章推荐: php - PHP中给定日期的下一个工作日
文章推荐: php - 如何在 PHP 中构建跨数据库查询?
文章推荐: sql - 如何添加到 MySQL 中的每一行?
IT王子
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com