gpt4 book ai didi

php - 在 php 中正确处理来自 mysqli 准备语句的数据

转载 作者:行者123 更新时间:2023-11-30 23:08:40 25 4
gpt4 key购买 nike

我不确定我的代码可能出了什么问题,所以我需要一些帮助。我尽我所能地按照在线教程使用我的数据,但我不能完全按照他们做的那样做,所以我会发布一个指向我正在使用的教程页面的链接。

tutorial我指的是使用带有数组的 foreach 循环来表示他们的大陆,但这种事情不适用于我的数据。所以我使用了一个 for 循环,它将递增到 5,即我使用的 LIMIT。

$start_from = 0; // arbitrary for this question
if ($stmt = mysqli_prepare($db, "SELECT ID, name, image_path FROM people WHERE age=? LIMIT ? , 5")) {
mysqli_stmt_bind_param($stmt, "ii", $_GET['age'], $start_from);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
for($counter=0; $counter <=5; $counter++) /* "$counter <= 5" because my SQL query is limited to this number of items. */
{
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
foreach ($row as $r) {
print_r("$r ");
}
print "\n";
}
}
mysqli_stmt_close($stmt);
}

可能出了什么问题?

最佳答案

@Fred 已经在评论中诊断出第一个问题,所以我将我的答案标记为 CW。也就是说,您的 for 循环从 0 到 5,实际上运行了六次迭代。

但这不是代码中唯一的逻辑问题。考虑一下:

for($counter=0; $counter < 5; $counter++) {
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
...

for 循环执行它的代码块五次。但内部 block 使用 whilefor 循环的第一次迭代中获取结果集中的 所有 行。

在 for 循环的第二到第五次迭代中,它尝试调用 mysqli_fetch_array() 但是一旦查询结果被读取一次,该函数将在您调用它的所有后续时间返回 null .所以根本没有使用 for 循环。

在这种情况下,不会造成太大的伤害,因为 while 循环只是看到一个 null 并在它运行单个迭代之前终止。但是这个编码错误可能会在未来的某个项目中困扰您。

关于php - 在 php 中正确处理来自 mysqli 准备语句的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723785/

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