2015-03-19 2 views
0

Я хочу выполнить запрос select в таблице моих пользователей с sqli в php. По соображениям безопасности (sql injection) я хочу сделать это с помощью параметров (-ов). Также я хочу сохранить результат в переменной php.Как получить запрос запроса sql

Это мой код:

переменная $conn заполнена правильно.

$login = $_POST['username']; 

//Check if username is available 
/*Line44*/ $stmt = $conn->prepare("SELECT login FROM users WHERE login = ?"); 
/*Line45*/ $stmt->bind_param('s', $login); 
      $result = $stmt->execute(); 

if ($result->num_rows > 0) 
{ 
    echo "This username is in use."; 
} 
else 
{  
    //Add account to database 
    $stmt = $conn->prepare("INSERT INTO users (login, password, email, gender) VALUES (?, ?, ?, ?)"); 
    $stmt->bind_param('ssss', $login, $md5pass, $email, $gender); 
    $stmt->execute(); 
    $stmt->close(); 
    echo "<font color=\"#254117;\">Your account is succesfully geregistered! <br />U can now login!</font>"; 
} 

Я получаю эту ошибку:

Warning: mysqli::prepare() [mysqli.prepare]: Couldn't fetch mysqli in C:\xampp\htdocs\cammerta\registreer.php on line 44

Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\cammerta\registreer.php on line 45

Я надеюсь, что кто-то может обеспечить решение и объяснить мне, что я сделал неправильно. Спасибо заранее!

ответ

0
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); 
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
$stmt->bind_param('sssd', $code, $language, $official, $percent); 
$stmt->execute(); 

Plus

1.Please запустить запрос в PHPMyAdmin или любой программы

2.Maybe вы не установить переменные. $ login, $ md5pass, $ email, $ gender

+0

Спасибо, 4 ваш anwser. Я получил свой код с того же сайта, что и ваш пример. все правильно установили мои переменные. Я хочу сохранить свой результат в переменной, чтобы я мог проверить, есть ли в нем строки. – NickGames

+0

Успешен ли ваш первый запрос? –

+0

Прошу прощения, я поставил номера строк перед неправильными строками. Исправлено. – NickGames

0

$ stmt = $ conn-> инструкция подготовки может быть возвращена false. Пожалуйста, используйте данный код для получения ошибки в запросе.

if ($stmt = $conn->prepare('your query')) { 
    $stmt->bind_param(...); 

} 
else { 
    printf("Error=: %s\n", $conn->error); 
}