2016-03-17 5 views
0

Я использую mysqli_real_escape_string для очистки ввода моего пользователя перед его вставкой в ​​мою базу данных. Я использовал его без проблем, но по какой-то причине на этот раз он не распознает мой идентификатор ссылки.Mysqli_real_escape_string не распознает ссылку

//Connect to mysql server 
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 
if (!$link) { 
    die('Failed to connect to server: ' . mysqli_error()); 
} 

//Function to sanitize the values received from the form (prevents SQL injection) 
function clean($str) { 
    $str = trim($str); 
    if (get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    $rtstr = mysqli_real_escape_string($link, $str); 
    return $rtstr; 
} 

По какой-то причине, когда я пытаюсь ввода информации через этот файл, он дает мне ошибку «Undefined переменной: связь», а затем «mysqli_real_escape_string() ожидает параметр 1, чтобы быть MySQLi» за каждый раз, когда он сталкивается с этим функция.

Я очень смущен, потому что все кажется правильным, но я не могу найти способ обойти эту ошибку. Что-то я здесь делаю неправильно? Или это что-то вне этого кода вызывает проблему?

+0

Вы пишете весь этот код в одном файле? Или это соединение в другом файле, и, возможно, вы не включили его в этот второй файл. –

ответ

1

Вы звоните $link в свою функцию, но не определен в вашей функции. Вы должны передать его в качестве параметра или определить его в функции.

Затем вы должны позвонить своей функции.

//Connect to mysql server 
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 
if (!$link) { 
    die('Failed to connect to server: ' . mysqli_error()); 
} 
//Function to sanitize the values received from the form (prevents SQL injection) 
function clean($str,$link) { 
    $str = trim($str); 
    if (get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    $rtstr = mysqli_real_escape_string($link, $str); 
    return $rtstr; 
} 

clean('test',$link); 
+0

Спасибо! Я преобразовывал это из старой функции mysql и даже не думал об этом. Хороший глаз! Я дам вам чек в 10 минут, когда смогу. –

+0

Добро пожаловать, без проблем :) –

0

Просто объявите глобальную ссылку $ в пределах вашей функции.

function clean($str) { 
    /* Other code */ 
    global $link; // Add this 
    $rtstr = mysqli_real_escape_string($link, $str); 
    return $rtstr; 
} 

Надеюсь, что это поможет.

Мир! xD

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