下面的代码显示了一个电子邮件地址作为输出,但我想获得所有的列表 客户表的电子邮件地址(以逗号分隔)。我怎么能得到它?
<?php
$SQLstring = "SELECT email FROM customers";
$QueryResult = @mysqli_query($DBConnect, $SQLstring)
or die("<p>Unable to execute the query.</p>" .
"<p> Error code " . mysqli_errno($DBConnect) . ":" . mysqli_error ($DBConnect))."</p>";
$NumRows = mysqli_num_rows($QueryResult);
if ($NumRows == 0)
{
echo "<p>No email found.</p>";
}
else
{
for($i = 1; $i <= $NumRows; $i++)
{
$Row = mysqli_fetch_row($QueryResult);
$email = stripslashes($Row[0]);
echo $email;
}
}
?>
答案 0 :(得分:1)
变化:
$email = stripslashes($Row[0]);
要:
$email = stripslashes($Row[$i]);
你应该设置
答案 1 :(得分:1)
PHP文档说mysqli_num_rows可能不会返回正确的行数,直到你检索完所有行,所以也许不是使用行计数,而是继续提取行直到你用完为止:
while ($Row = mysqli_fetch_row($QueryResult))
{
$email = stripslashes($Row[0]);
echo $email;
}
编辑:如果您想将电子邮件存储在数组中而不是仅仅回显它们,只需将其更改为:
while ($Row = mysqli_fetch_row($QueryResult))
{
$email[] = stripslashes($Row[0]);
}
现在$ email将是一个包含所有电子邮件的数组。
答案 2 :(得分:1)
这是mysqli
不 mysql
您正在使用,所以事情的工作方式有点不同......
假设您已经使用$DBConnect = new msqli( ... );
在操作结果之前存储结果可能更好;尝试类似的事情:
$success = $DBConnect->real_query($SQLstring);
if($success) {
$result = $DBConnect->store_result();
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row['email'] . "<br />\n"; //for debugging purposes
}
}
$result->free();
答案 3 :(得分:0)
在while循环中使用mysql_fetch_assoc
$ NumRows = mysqli_num_rows($ QueryResult);
if ($NumRows == 0)
{
echo "<p>No email found.</p>";
}
else
{
while($row = mysql_fetch_assoc($QueryResult)){
$email = stripslashes($row['email']);
echo $email;
}
}