mysqli::real_query

mysqli_real_query

(PHP 5)

mysqli::real_query -- mysqli_real_queryВыполнение SQL запроса

Описание

Объектно-ориентированный стиль

bool mysqli::real_query ( string $query )

Процедурный стиль

bool mysqli_real_query ( mysqli $link , string $query )

Выполняет одиночный запрос к базе данных, результаты которого можно получить или использовать функциями mysqli_store_result() или mysqli_use_result().

Чтобы определить, должен ли запрос возвращать результирующий набор, см. mysqli_field_count().

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

query

Текст запроса в виде строки.

Данные в тексте запроса должны быть правильно экранированы.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Смотрите также

  • mysqli_query() - Выполняет запрос к базе данных
  • mysqli_store_result() - Передает результирующий набор последнего запроса
  • mysqli_use_result() - Готовит результирующий набор на сервере к использованию

Коментарии

Автор:
Straightforward function - simply connect to the database and execute a query, similar to this function bellow.

<?php

function check_password($username$password) {
// Create connection
$db = new mysqli('localhost','database_user','database_pass','database_name');

// Check for errors
if($db->connect_errno){
echo 
$db->connect_error;
}

// Execute query
$result $db->real_query("Select * From users Where username='$username' And password='$password'");

// Always check for errors
if($db->connect_errno){
echo 
$db->connect_error;
}

return 
$result == true;
}
?>

Very easy. 

Replace database_user, database_pass and database_name with the proper names, and the text inside real_query with your actual query. 

Don't forget the quotes on either side (except for numbers, there you can omit them) otherwise it won't work. Hope that helps someone.
2016-10-26 13:18:23
http://php5.kiev.ua/manual/ru/mysqli.real-query.html
Автор:
Please note that this example is vulnerable to injection and uses plain-stored passwords...
2018-10-04 11:37:23
http://php5.kiev.ua/manual/ru/mysqli.real-query.html
Well, we don't know if $password is in plain text because it was never defined in the example.

New passwords should be stored using

<?php
$crypt_pass 
password_hash($passwordPASSWORD_DEFAULT);
?>

Where PASSWORD_DEFAULT = BCRYPT algorithm

Then to compare a user entered password to a database stored password, we use:

<?php
$valid 
password_verify($password$crypt_pass);
?>

Which returns true or false.

As for being vulnerable to injection, this is true. To avoid this, use sprintf() or vsprintf() to format the query and inject the values using mysqli::real_escape_string, like so:

<?php
$vals 
= [$db->real_escape_string($username), $db->real_escape_string($password)];
$query vsprintf("Select * From users Where username='%s' And password='%s'"$vals);
$result $db->real_query($query);
?>
2019-02-10 01:33:50
http://php5.kiev.ua/manual/ru/mysqli.real-query.html

    Поддержать сайт на родительском проекте КГБ