【问题标题】:Results not displaying from MySQL query with PHP使用 PHP 的 MySQL 查询未显示结果
【发布时间】:2014-02-02 09:32:02
【问题描述】:

我已经为这个问题绞尽脑汁 2-3 天了,所以我将不胜感激。

我正在查询我的数据库以获取特定的结果集。

代码

<?php

$_POST['custid'];
$db=mysqli_connect("***","***","***","***");
// Check connection
if (mysqli_connect_errno($db))
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="SELECT DISTINCT duedate FROM invoicequote WHERE customeraccountnumber='1000001'";
echo $sql;

$result=mysqli_query($db,$sql) or die(mysqli_error($db));
if ($result)
{
    // Return the number of rows in result set
    $rowcount=mysqli_num_rows($result);
    printf("Result set has %d rows.\n",$rowcount);
    // Free result set
    mysqli_free_result($result);
}

while ($num = mysqli_fetch_array($result)) {
    echo $num;
    $duedate=$num['duedate'];
    echo $num['duedate'];
    print $num['duedate'];
    mysqli_free_result($result);
}

mysqli_close($db);

?>

echo sql 给出

SELECT DISTINCT duedate FROM invoicequote WHERE     
customeraccountnumber='1000001'

打印行数给出

结果集有 1 行。

我知道它是 PHP while 循环,但我认为因为我一直在研究它并试图将其转换为函数,所以我看不出我做错了什么。

上面的代码已经单独运行到主页代码,因为问题出在这部分。代码不是我为了找到错误而直接剥离代码的基本功能。

已删除数据库详细信息。

SQL 查询详细信息只是一个虚拟帐户,不是真实的。

【问题讨论】:

  • 这些是邪恶的行吗? mysqli_free_result($result);
  • 乍一看有两件事。您的 if ($result) 测试中没有 else 子句,因此如果您没有得到结果,脚本将静默失败。此外,您正在尝试在 if ($result 块) 之外使用 $result,如果您没有得到结果,它将失败。
  • 在 else 语句中添加并从 while 循环中删除了空闲结果。它现在抓取数据很好,谢谢 GordonM 和 mmiltos

标签: php mysql sql loops mysqli


【解决方案1】:
// Free result set
mysqli_free_result($result);

希望您在代码中阅读此内容(两次)。

【讨论】:

    【解决方案2】:

    mysqli_free_result() 函数释放与结果相关的内存。

    你不能跑

    while($num = mysqli_fetch_array($result)){
    }
    

    $result

    【讨论】:

      【解决方案3】:

      就像从 if 块中删除 mysqli_free_result($result); 一样简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 1970-01-01
        • 2015-03-29
        • 1970-01-01
        • 2010-12-19
        相关资源
        最近更新 更多