2013-01-21 78 views
-1

因此,我們知道沒有實際的mysqli result,因爲有mysql所以我在一個綁定。我做了一個快速搜索,並找到了一個可以複製相同效果的函數,但它似乎不起作用。我不確定我是否實施了錯誤或者功能不佳。mysqli結果函數

這是腳本

<?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還是缺少當前函數中的某些東西?

回答

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"); 

} 
+0

我真的希望它能工作!但它給出了一個錯誤'致命的錯誤:調用一個非對象的成員函數fetch_array()我想它會去,因爲'mysqli'函數總是想成爲我的屁股疼痛。 – kira423

+0

@ kira423:如果'$ result'是一個非對象,那意味着您的查詢失敗。 – dnagirl

+0

這是因爲我錯誤地標記了我的一個行名稱--_d ty dnagirl – kira423

1

So as we know there is no actual mysqli result as there is with mysql

誰說你的?有。特別是如果你使用的是普通的查詢(),沒準備()/執行():

// 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"]; 
    ... 
} 

請注意,您要發送儘可能多的「刷新」頭儘可能多的電子郵件發送的。

So I may be missing something in my PHP set up, but I would have no idea what.

不是在PHP設置中,而是在代碼中。
正如你在代碼中使用的原始API函數(這是噁心到我的口味),始終運行查詢至少這樣

$result = $db->query($query) or trigger_error($db->error." [$query]"); 

,你會被告知有什麼錯yopr代碼或服務器或任何與失敗的查詢相關的東西

+0

不知道爲什麼刪除額外的一行編碼令人厭惡,但我們都做了不同的事情,但是謝謝你指出我有我的'頭部刷新'在我的'while'循環中 – kira423