2012-01-29 5 views
0

Я пытаюсь использовать как mysqli_real_escape_string, так и trim вместе перед тем, как сделать запрос MySQL INSERT. Мой код выглядит следующим образом:mysqli_real_escape_string не работает правильно

<?php 
$fname = mysqli_real_escape_string($dbc, trim($_POST['fname'])); 
$sname = mysqli_real_escape_string($dbc, trim($_POST['sname'])); 
$occ = mysqli_real_escape_string($dbc, trim($_POST['occ'])); 
$twitter = mysqli_real_escape_string($dbc, trim($_POST['twitter'])); 
$email = mysqli_real_escape_string($dbc, trim($_POST['email'])); 
$skype = mysqli_real_escape_string($dbc, trim($_POST['skype'])); 
$topic1 = mysqli_real_escape_string($dbc, trim($_POST['topic1'])); 
$topic2 = mysqli_real_escape_string($dbc, trim($_POST['topic2'])); 
$topic3 = mysqli_real_escape_string($dbc, trim($_POST['topic3'])); 
$avoid1 = mysqli_real_escape_string($dbc, trim($_POST['avoid1'])); 
$avoid2 = mysqli_real_escape_string($dbc, trim($_POST['avoid2'])); 
$avoid3 = mysqli_real_escape_string($dbc, trim($_POST['avoid3'])); 
$cr = mysqli_real_escape_string($dbc, trim($_POST['cr'])); 

if ((!empty($fname)) && (!empty($sname)) && (!empty($email)) && (!empty($topic1))) { 
    $dbc = mysqli_connect('host', 'user', 'password', 'database') or die('Error connecting to MySQL server'); 
    $query = "INSERT INTO initial_details (fname, sname, occ, twitter, email, skype, topic1, topic2, topic3, avoid1, avoid2, avoid3, cr) VALUES ('$fname', '$sname', '$occ', '$twitter', '$email', '$skype', '$topic1', '$topic2', '$topic3', '$avoid1', '$avoid2', '$avoid3', '$cr')"; 
    $result = mysqli_query($dbc, $query); 
    if (!$result) { 
     mysqli_close($dbc); 
     echo 'Duplicate'; 
    } else { 
     mysqli_close($dbc); 
     echo 'Success - entry added'; 
    } 
} else { 
    echo 'Error'; 
} 
?> 

Используя код, как описано выше, я получаю сообщение «Ошибка», однако если удалить mysqli_real_escape_string() и просто использовать trim Я могу вставить свою запись успешно.

Почему я не могу использовать mysqli_real_escape_string() в этом сценарии?

+0

Какие ошибки вы получаете? И считали ли вы использование подготовленных заявлений? – Corbin

+0

В том числе ошибка messege может просто помочь. –

+0

Если у вас возникла проблема с определенной функцией PHP, сначала обратитесь к руководству для этой функции, например [http://php.net/mysqli_real_escape_string'](http://php.net/mysqli_real_escape_string) - это наиболее часто перечисляет предварительные условия для правильной работы функции. – hakre

ответ

4

$dbc = mysqli_connect должен предшествовать всем звонкам mysqli_real_escape_string, чтобы заставить его работать. Это связано с тем, что для использования этой функции требуется активное соединение mysqli для .

+0

Ошибка мальчика школы. Прекрасно работает. Благодарю. – Ryan

2

Сначала необходимо подключиться к своей базе данных.
Включение отчетов об ошибках также помогает.

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