2016-06-19 23 views
-1

感謝您花時間閱讀這本書,我提前道歉我的編碼是多麼混亂,我試圖教我自己。如果輸入的名稱,電子郵件或電話與數據庫匹配,則在運行檢查時獲取行的id時,我會遇到錯誤。我試圖獲取該ID,以便我可以將該ID作爲郵件的「owner_id」,當我存儲它時。mysql row id正在返回0,當它應該返回一個更高的數字

Fatal error: Call to undefined method mysqli_stmt::fetch_assoc() in /var/www/a-website.com/html/inc/db3.php on line 35 

線35

while($row = $prepared_check->fetch_assoc()){ 

這裏是整個PHP文件。它在另一個php文件中的required_once,並運行在該PHP文件使用

checkRecords($name, $tel2, $email); 

反正,到PHP文件。

$run_check = 1; 

function newInsert($name, $email, $tel, $mysqli){ 
    $prepared_insert = $mysqli->prepare("INSERT INTO call_list (name, email, tel) VALUES (?, ?, ?)"); 
    $prepared_insert->bind_param('sss', $name, $email, $tel); 
    $prepared_insert->execute(); 
    $run_check = 1; 
} 

function storeMessage($id, $message, $mysqli){ 
    $prepared_message = $mysqli->prepare("INSERT INTO messages (owner_id, message) VALUES (?, ?)"); 
    $prepared_message->bind_param('ss', $id, $message); 
    $prepared_message->execute(); 
    $prepared_message->close(); 
    $run_check = 0; 
} 

function checkRecords($name, $email, $tel, $message){ 
    $servername = "localhost"; 
    $username = "a_valid_user"; 
    $password = "some_valid_password"; 
    $dbname = "call_list"; 
    $mysqli = new mysqli($servername, $username, $password, $dbname); 
    if($mysqli->connect_errno){ 
      $_SESSION['result_sql'] = "<div class='alert alert-danger'>Failed to connect to MySQL:(".$mysqli->errno.")". $mysqli->error."</div>"; 
    } 
    $prepared_check = $mysqli->prepare("SELECT * FROM call_list WHERE name = ? OR tel = ? OR email = ?"); 
    $prepared_check->bind_param('sss', $name, $tel, $email); 
    $prepared_check->execute(); 
    $prepared_check->store_result(); 
    $nm_rows = $prepared_check->num_rows; 
    $prepared_check->bind_result($id, $name, $tel, $email); 
    while($row = $prepared_check->fetch_assoc()){ 
      echo "grabbed ". $nm_rows ." results<br><br>"; 

      if($nm_rows === 0){ 
        echo "trying to insert<br><br>". $name ."<br><br>". $email ."<br><br>". $tel; 
        newInsert($name, $email, $tel2, $mysqli); 
      }else{ 
        echo "i'm trying to store a message with the owner id of ". $row['id'] ." who should be".$row['name']; 
        echo "<br><br> here's the message: <br><br>". $message ."<br><br><br>"; 
        storeMessage($id, $message, $mysqli); 
      } 
    } 

} 
+0

我認爲你需要提供源到'fetch_assoc()'函數,因爲它在你的問題中不可見。 – cbillowes

+2

'mysqli_statement'沒有'fetch_assoc'方法。從你的代碼中,你可能只需要'fetch'。 –

+0

爲什麼這樣的錯誤信息不足以解決?這不明顯嗎? –

回答

1

A mysqli聲明沒有fetch_assoc()方法。相反,你可以使用:fetch()

相關問題