2016-06-19 3 views
-1

спасибо за то, что нашли время, чтобы прочитать это, и я заранее извиняюсь за то, как испортил мой код, я пытаюсь научить себя. Я сталкиваюсь с ошибкой, когда дело доходит до получения идентификатора строки, когда проверка выполняется, если имя, адрес электронной почты или телефон ввода совпадают с db. Я пытаюсь получить идентификатор, чтобы я мог связать этот идентификатор как «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. его required_once в другом php-файле и запустить в этом 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

mysqli заявления не fetch_assoc() метода. Вместо этого вы можете просто использовать: fetch()

Смежные вопросы