【发布时间】: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