因为我们知道mysqli result
没有mysql
,所以我处于绑定状态。我做了一个快速搜索,发现了一个可以复制相同效果的函数,但它似乎无法正常工作。我不确定我是否实现了错误,或者功能是不是很好。
这是脚本
<?php
if($_SESSION['aname'] == NULL){
header("Location: index.php?au=login");
}
if(isset($_POST['submit']))
{
function email_result($res, $row, $field=0) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return $datarow[$field];
}
if (get_magic_quotes_gpc())
{
$subject = stripslashes($_POST['subject']);
$message = stripslashes($_POST['message']);
}
else
{
$subject = $_POST['subject'];
$message = $_POST['message'];
}
$result = $db->query("SELECT `email` FROM `members` WHERE `alert` = '1'");
$num = $result->num_rows;
$i=0;
while($i < $num)
{
$email = email_result($result,$i,"email");
mail($email, $subject, $message, "From: ".$settings_info['website_name']." Admin<".$settings_info['admin_email'].">");
echo "Email sent to: ".$email."<br />";
header("Refresh: 2; url=index.php?au=send_message");
$i++;
}
}
else
{
?>
<table align='center'>
<form method='post' action=''>
<tr><td>Subject:</td><td><input type='text' name='subject' id='subject' value='' /></td></tr>
<tr><td>Message: </td><td><textarea name='message' id='home_text' cols='50' rows='15'></textarea></td></tr>
<tr><td></td><td><input type='submit' name='submit' id='submit' value='Send Message' /></td></tr>
</form>
</table>
<?php
}
?>
当使用Xampp脚本时,它产生了正确的信息,并且会回复它发送的电子邮件,即使它实际上没有发送它们,也意味着它正常工作。所以我可能在PHP设置中遗漏了一些东西,但我不知道是什么。
所以我的问题是,是否有更好的方法来复制mysql_result
,而不是我用于mysqli
的方法,或者我错过了我在这里的当前函数中的某些内容?
答案 0 :(得分:1)
您需要从资源中获取每一行。像这样:
$result = $db->query("SELECT `email` FROM `members` WHERE `alert` = '1'");
$num = $result->num_rows;
while($row = $result->fetch_assoc()) // <-------------here's how to get the data
{
$email = $row'[email'];
mail($email, $subject, $message, "From: ".$settings_info['website_name']." Admin<".$settings_info['admin_email'].">");
echo "Email sent to: ".$email."<br />";
header("Refresh: 2; url=index.php?au=send_message");
}
答案 1 :(得分:1)
因此我们知道没有与mysql一样的mysqli实际结果
谁说你呢?有。特别是如果你使用普通的query(),而不是prepare()/ execute():
// here goes your mysqli result:
$result = $db->query($query);
//now you can iterate over it getting row data
while ($row = $result->fetch_assoc($result)) {
$email = $row["email"];
...
}
请注意,您发送的电子邮件数量与“刷新”标题一样多。
所以我可能在PHP设置中遗漏了一些内容,但我不知道是什么。
不在PHP设置中,而是在代码中 当您在代码中使用原始API函数时(这令我讨厌),始终至少以这种方式运行查询
$result = $db->query($query) or trigger_error($db->error." [$query]");
你会被告知yopr代码或服务器或与失败查询相关的任何内容有什么问题