2015-06-04 3 views
-1

Я использую PHP real_escape_string для sanatize моих заявлений SQL, но я получаю фатальную ошибку на сценарий нагрузке: Catchable фатальной ошибки: Объект класса mysqli_result не может быть преобразован в строку в .... на линия: $query.=", EMGNAME='" . $db->real_escape_string($_POST["emgname"])PHP real_escape_string в если заявление

$db = new mysqli("XXX","YYY","ZZZZ", "DDDD"); 
/* check connection */ 
if ($db->connect_error) { 
    trigger_error('Database connection failed: ' . $db->connect_error, E_USER_ERROR); 
} 
if ($_POST['toedit']=="profile")   
{ 
    $query="UPDATE STUDENTS SET "; 
    $query.="SEMAIL='" . $db->real_escape_string($_POST["email"]) . "'"; 
// $query.=", NATIONALITY='" . $db->real_escape_string($_POST["nationality"]). "'"; 
    $query.=", ADDRESS1='" . $db->real_escape_string($_POST["address1"]). "'"; 
    if (empty($_POST["ADDRESS2"])) 
    { 
     $query.=", ADDRESS2=NULL"; 
    } 
    else 
    { 
     $query.=", ADDRESS2='" . $db->real_escape_string($_POST["address2"]) . "'"; 
    } 
    $query.=", CITY='" . $db->real_escape_string($_POST["city"]) . "'"; 
    if (empty($_POST["STATE"])) 
    { 
     $query.=", STATE=NULL"; 
    } 
    else 
    { 
     $query.=", STATE='" . $db->real_escape_string($_POST["state"]) . "'"; 
    } 
    if (empty($_POST["postal"])) 
    { 
     $query.=", POSTAL=NULL"; 
    } 
    else 
    { 
     $query.=", POSTAL='" . $db->real_escape_string($_POST["postal"]) . "'"; 
    } 
    $query.=", COUNTRY='" . $db->real_escape_string($_POST["country"]) . "'"; 
    $query.=", SPHONE='" . $db->real_escape_string($_POST["sphone"]) . "'"; 

}//profile tab 
else if ($_POST['toedit']=="emergency") 
{ 
    if (empty($_POST["emgname"])) 
    { 
     $query.="EMGNAME=NULL"; 
    } 
    else 
    { 
     $query.=", EMGNAME='" . $db->real_escape_string($_POST["emgname"]) . "'"; 
    } 
    if (empty($_POST["emgphone"])) 
    { 
     $query.=", EMGPHONE=NULL"; 
    } 
    else 
    { 
     $query.=", EMGPHONE='" . $db->real_escape_string($_POST["emgphone"]) . "'"; 
    } 

у меня есть сценарий вызывается через AJAX, чтобы upadate только вкладка используется поэтому форма не проходит «emgname», но это, кажется, PHP хочет, чтобы попытаться выполнить real_escape_string даже если это в выражении if. В тот момент, когда вкладки вызывают один скрипт для обновления любого содержимого, которое нужно отредактировать, (else if ($ _POST ['toedit'])), но кажется, что php заставляет меня использовать другой скрипт для каждой вкладки?

+3

Что такое * точное сообщение об ошибке? –

+1

Если вы все равно используете mysqli, почему бы не использовать подготовленные инструкции? –

+0

Ловкая фатальная ошибка: объект класса mysqli_result не может быть преобразован в строку в ... – BigGrecian

ответ

-1

Проблема была в том, что я использовал вкладки Jquery для загрузки каждой формы. Когда форма была отправлена, она пропускает значения NULL, которые real_escape_string не может обрабатывать.

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