Попытка обойти для mysqli_real_escape_string

Поэтому в настоящее время у меня есть код в процедурном формате, поэтому он не позволяет мне добавлять «ссылку» в функцию mysqli_real_escape_string. Я создал метод, который выглядит следующим образом:

    // Used to create a legal SQL string that you can use in an SQL statement in place of mysqli_real_escape_string
public function escape_string($string) {
$newstring = mysqli_real_escape_string($this->dbconn, $string);
return $newstring;
}

Когда я использую это, я не получаю никаких результатов, хотя дайте мне знать, если у вас есть какие-либо рекомендации.

Вот несколько примеров, где я использую функцию:

function email_exists($email,$dblayer){

$sql            =   "SELECT `id` FROM `users` WHERE `email` = '" . $dblayer->escape_string($email) . "'";

$results        =   $dblayer->select_query($sql);

if($results){

return true;

}else{

return false;

}

И это:

public function pass_reset($email){

$newpass        =   substr(md5(mt_rand(1,99999)),0,8);

$newpasshash    =   md5($newpass . '************');

$sql            =   "UPDATE `admin_users` SET `password` = '" . $newpasshash . "' WHERE `username` = '" . $this->dblayer->escape_string($email) . "'";

$this->dblayer->modify_query($sql);

return $newpass;

}

И это, которое создано вокруг другого dblayer, который называется dbobject:

                case $range:

$dates          =   explode(',',$_GET['search-string']);

$sql            =   "SELECT SQL_CALC_FOUND_ROWS * FROM `user_profile` WHERE `created` BETWEEN '" . $dates[0] . "' AND '" . $dates[1] . "'";

break;

default:

$sql            =   "SELECT SQL_CALC_FOUND_ROWS * FROM `user_profile` WHERE `" . $_GET['search-field'] . "` LIKE '%" . $dbobject->escape_string($_GET['search-string']) . "%'";break;

0

Решение

Похоже, проблема, вероятно, двоякая. Во-первых, я ожидаю, что ваш $this->dbconn является NULL, Это может mysqli_real_escape_string вернуть NULL, Это означает, что ваш SQL, вероятно, ищет пустые строки.

Лучший способ убедиться в этом — проверить, является ли соединение NULL или проверьте SQL, который вы используете. Вы видите ряд ''? Тогда вы объединяетесь против нуля.

Однако единственный способ, которым это может произойти, — это подавление отчетов об ошибках. Во время разработки у вас должны быть включены ошибки. Есть информация о том, как показывать ошибки в этом вопросе.

0

Другие решения

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

// Used to create a legal SQL string that you can use in an SQL statement in place of mysqli_real_escape_string
public function escape_string($string) {
$newstring = '';

if ($this->dbconn) {

switch ($this->dbtype) {

case 'mysql' :

$newstring = mysqli_real_escape_string ( $this->dbconn, $string );
break;
}
}
return $newstring;
}
0

По вопросам рекламы [email protected]