2016-08-09 3 views
-2

У меня есть запрос, что я уверен, но это не так. и, будучи сказанным, я не понимаю, что может вызвать проблему. вот мой php-скрипт., имеющий проблему с выбранным запросом

$con = mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_DATABASE); 
if(!$con){ 
echo "Connection Error...".mysqli_connect_error(); 
} 
else 
{ 
echo "Database connection Success..."; 
} 

$user_name = $_POST["login_name"]; 
$user_pass = $_POST["login_pass"]; 

$sql_query = "SELECT name from user_info where user_name like '$user_name' 
and user_pass like '$user_pass'"; 
$result = mysqli_query($con,$sql_query); 

if(mysqli_num_rows($result)>0) 
{ 
$row = mysqli_fetch_assoc($result); 
$name = $row ["name"]; 
echo "Hello welcome".$name; 

} 

else { 
echo "No user found"; 

} 




?> 
+2

Вы не только получаете котировки, но и ваш код широко открыт для [SQL Injection] (http://stackoverflow.com/documentation/php/275/using-a-database/2685/preventing-sql-injection-with -parametrized-запросы). Вы также никогда не должны хранить пароли в виде обычного текста. Используйте [хэш пароля для их защиты] (http://stackoverflow.com/documentation/php/530/password-hashing-functions) – Machavity

+0

какие ошибки вы получаете (проверьте свой журнал ошибок) и что вы имеете в виду, когда вы говорите, что он не работает? Выполняется ли запрос? Вы получаете какой-то результат? В этом вопросе не хватает даже основных попыток отладки, таких как «var_dump» для переменных, чтобы дважды проверить их значения. var_dump запрос, убедитесь, что он выглядит правильно. var_dump результат и убедитесь, что он не возвращает false/null. var_dump num_rows, чтобы узнать, сколько строк возвращается. запустите запрос в другой программе, чтобы увидеть, возвращаются ли какие-либо строки. дважды проверьте, что таблица имеет строку, которая должна соответствовать ожидаемому ... и т. д. –

+0

Он не будет выбирать имя из базы данных – Zanzi

ответ

0

Вы забыли обернуть свою строку запроса в кавычки. Вы пишете запрос в своей переменной PHP, поэтому он должен быть заключен в кавычки.

$sql_query = "SELECT name from user_info where user_name like '{$user_name}' and user_pass like '{$user_pass'}"; 
2

Вы не использовали котировки! Помните, $query это строка!

$con = mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_DATABASE); 

if(!$con) { 
echo "Connection Error...".mysqli_connect_error(); 
} else { 
echo "Database connection Success..."; 
} 

$user_name = $_POST["login_name"]; 
$user_pass = $_POST["login_pass"]; 

$sql_query = "SELECT name from user_info WHERE user_name like '$user_name' 
and user_pass like '$user_pass'"; 
$result = mysqli_query($con,$sql_query); 

if(mysqli_num_rows($result)>0) { 
    $row = mysqli_fetch_assoc($result); 
    $name = $row ["name"]; 
    echo "Hello welcome".$name; 
} else { 
    echo "No user found"; 
} 
0

Какая ошибка вы испытываете?

Ваш запрос должен быть строкой, которая означает, что вам нужно, чтобы окружить его с кавычками при назначении его:

$sql_query = "SELECT name from user_info where user_name like '" . $user_name 
. "' and user_pass like '" . $user_pass . "'"; 

вы также можете использовать этот синтаксис:

$sql_query = "SELECT name from user_info where user_name like '{$user_name}' and user_pass like '{$user_pass}'"; 

Это, однако оставить вас открытым для SQL Injection Attacks. См. this part of the PHP documentation для получения дополнительной информации.

+0

Мой запрос был string Я пытался все и забыл вернуть его на вопрос, так что даже в качестве строки он все еще не работает – Zanzi

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