php - 对 mysql 查询的每个单独结果使用 while 语句

标签 php mysql

我不确定此代码是否使用“while”或“foreach”。

我有一个 mysql 查询,它将返回多个结果。

然后,对于每个结果,如果 $row[number] 为空或不为空,我想要执行某件事

我有这个:

$sql = "SELECT * FROM $tbl_name WHERE username=\"$myusername\"";
$result=mysql_query($sql);
$numResults = mysql_num_rows($result);
if ($numResults = 0) {
header ("Location: /sms_error.php?error=no_adders");
}
while($row = mysql_fetch_array($result)) {
$number1=$row["number"];
if (!empty($number1)) {


}

if (empty($number1)) {


}

这对于 $number1 来说是完全空白的(即使数据库上有数据)。

到目前为止一切都是正确的,$myusername 和 mysql 查询不会返回空。

那么它应该是mysql-fetch-assoc还是-array,应该是while还是foreach?

谢谢, 尼尔

最佳答案

首先,您在这行代码中遇到问题:

if ($numResults = 0) {
    header ("Location: /sms_error.php?error=no_adders");
}

这始终是错误的 - 您不是在比较,而是将 0 分配给 $numResults。将其更改为 == 并查看是否通过查询提取了任何行。

while($row = mysql_fetch_array($result)) {
$number1=$row["number"];
//...
}

正如我所见,这是一个有效的语法。尝试调用 var_dump($row) 来查看 $row 数组的内容。

编辑:

哦,是的 - 而不是这个:

$result=mysql_query($sql);

这样做:

$result=mysql_query($sql) or die(mysql_error());

还有一个建议 - 您应该始终在 header("Location: ..."); 之后调用 exit(); 以防止在重定向行后执行代码脚本,因为 header 仅要求用户浏览器重定向。

关于php - 对 mysql 查询的每个单独结果使用 while 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307763/

相关文章:

mysql - 如何在 MySQL 中搜索 1,2,3,4,5 等字符串时获得正确的结果

php - 在 php 和 mysql 中使用 Session 登录

java - MySql如何使用相同的ID在不同的表中插入数据

php - 使用范围 + 毕达哥拉斯定理选择结果

php - 从 MYSQL 输出中对数组进行排序并省略重复值

php - 这是一个安全/强大的输入清理功能吗?

mysql - 两张InnoDB表Join花了一天时间!!我无法使用 MYISAM,因为我的表超出了 MaxData 长度。如何解决这个问题呢?

MySQL 带有子表达式的 bool 全文搜索

php - 从另一个 IP 使用 PDO 连接到 MySQL

php - 使用变量时如何创建新的类实例