2015-09-17 2 views
0

Я пробовал поиск в forumn, но не смог исправить мою фатальную ошибку при кодировании моей подготовленной php-инструкции.PhP уловимая фатальная ошибка при использовании mysqli_stmt

Im, используя подготовленный оператор для предотвращения внедрения SQL-кода, а также предотвращает ошибку, когда пользователь вводит апостроф. Ниже мой код:

submit_data.php

<?php 
include "../connect.php"; 

$message_form = $_POST['message']; 
$username_form = $_POST['user']; 

// $insert_data=$db->query("INSERT INTO test_table_1(message,user) VALUES ('$message_form','$username_form')"); 

$insert_data=$db->prepare("INSERT INTO test_table_1(message,user) VALUES (?, ?)"); 

$insert_data->bind_param("ss", $message_form, $username_form); 
$insert_data->execute(); 


if ($insert_data === TRUE){ 
    echo "New record created successfully"; 

} else { 
    echo "Error: " . $insert_data . "<br>" . $db->error; 
    } 

$insert_data->close(); 
$db->close(); 
?> 

мой файл подключения к базе данных (connect.php)

<?php 

      $host = "localhost"; 
      $user = "root"; 
      $pass = ""; 

      $database_name = "test"; 
      $table_name = "test_table_1"; 

      //connect to mysql database 
      $db = new mysqli($host, $user, $pass, $database_name); 
      //check connection 
      if ($db -> connect_error) { 
       die("error mysql database not connected: " . $db -> connect_error); 
      } 
      // else { 
      // echo "connected successfully" ; //enable this for debugging purpose 
      // }    

?> 

Это ошибка я получаю

Допустимая смертельная ошибка:
Объект Класс mysqli_stmt не может быть преобразован в строку в /Applications/XAMPP/xamppfiles/htdocs/z_admin/submit_data.php на линии

Любая помощь или указатели будут весьма благодарны. Спасибо

ответ

0

Не эхо $db->error в этой строке, поскольку он содержит объект вашего подключения к базе данных

echo "Error: " . $insert_data . "<br>" . $db->error; 

Вместо Используйте affected_rows Возвращает автогенерируемая идентификатор, используемый в последнем запросе

if ($insert_data->affected_rows >0){ 
    echo "New record created successfully"; 

} else { 
    echo "Not inserted"; 
    } 
+0

Я вижу благодарю вас за помощь. да, сейчас нет ошибки. что означает u по объекту из базы данных? @Saty – peekaboo

+0

'print_r ($ db-> error)' и проверьте его значение !! – Saty

1

Перепишите код, как это

connect.php

<?php 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 

$database_name = "test"; 
$table_name = "test_table_1"; 

//connect to mysql database 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$db = new mysqli($host, $user, $pass, $database_name); 

submit_data.php

<?php 
include "../connect.php"; 

$stmt=$db->prepare("INSERT INTO test_table_1(message,user) VALUES (?, ?)"); 

$stmt->bind_param("ss", $_POST['message'], $_POST['user']); 
$stmt->execute(); 
echo "New record created successfully"; 

Этот метод добавляет лучшую проверку ошибок вы можете когда-либо вообразить.

+0

поблагодарить Вас за обратной связи, но надеялся распечатать на консоль, если существует ошибка, да, ваш метод работает тоже, поскольку он удаляет проверку ошибок. – peekaboo

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