2013-07-15 3 views
0

Итак, я пишу приложение на PHP, и я пытаюсь получить уникальные пользовательские данные на основе того, что они ввели. Вот мой код:Получение данных пользователей из того же поля

function hello($username123) { 
    // Connect to Database // 
$host3  = "db"; 
$username3 = "db"; 
$password3 = "db"; 
$db3  = "db"; 
$con3 = mysqli_connect($host3,$username3,$password3,$db3) or die("Can not connect to Server."); 
$student1name; 
$query3 = mysqli_query($con3,"SELECT * FROM 'users' WHERE 'username' = '$username123' and '$student1name' = 'student1'"); 
return "$student1name"; 

} 

Таким образом, пользователь вводит туда имя, которое они зарегистрированы ранее, а затем я выполнить запрос, где поле имени пользователя равно переменное имя пользователя (вход) и что переменная student1name является равное поле student1, где имя пользователя совпадает с именем пользователя. Затем я возвращаю переменную student1name. Но когда я проверяю это, все, что возвращается, это «». Я не могу понять проблему

+1

Вы не можете установить PHP-переменную в SQL-запросе! – Pieter

+0

Также, что должна делать 8-я строка ('$ student1name;')? Вы можете удалить это вообще. Если вы прочитаете несколько обучающих программ PHP и MySQLi в глубину, они очень помогут вам. –

+0

Несколько проблем, уже выявленных в ответах ниже. Вам нужно получить результаты запроса. Код, который вы выполняете, содержит инструкцию, но не извлекает из resulset (который будет создан, если SQL был действителен.) Поскольку вам нужен один столбец, замените это * на имя столбца, из которого вы хотите получить данные. Не используйте одиночные кавычки вокруг идентификаторов, используйте обратные символы. И самое главное, использовать подготовленный оператор или, по крайней мере, дезинфицировать входные значения. Остерегайтесь Little Bobby Tables, чье имя пользователя «Robert», пользователи DROP TABLES; - « – spencer7593

ответ

0

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

$row = mysqli_fetch_array($query3, MYSQLI_ASSOC); 

return $row['studentname']; 

я предполагаю, имя студента находится в колонке под названием studentname в вашей БД

+0

Не работает ... – user1666767

0

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

return $query3["student1name"]; 

бы, вероятно, будет более эффективным.

Если вы выбираете только одну переменную в своем запросе, вы можете просто эхо-запрос $ query3.

Это также было бы более эффективно, если бы вы изучили подготовленные заявления.

Обратите внимание, что

$student1name 

ничего не делает, так как вы никогда не дать ему правильное значение.

+0

ничего не возвращает – user1666767

+0

Попробуйте «SELECT student1name FROM» ... и просто верните $ query3; И дайте $ student1name какое-то значение. – Jonast92

+0

Thats the whole problem .. какое значение я дам $ student1name – user1666767

0

PHP автоматически заменяет любые переменные, которые вы используете внутри строки, на значение этой переменной. Например, если $ student1name = 'foo', тогда размещение $ student1name в любом месте вашего оператора SELECT буквально выводит вам строку 'foo' вместо этой переменной. Что касается оператора mysqli, вы не используете значение PHP, вы используете литеральную строку 'foo'. Поэтому ожидать, что ваш $ student1name var магически изменится на основе SQL-запроса, не произойдет.

Чтобы получить значение столбца вам нужно будет получить результат строки после выполнения запроса:

if ($row = $query3->fetch_assoc()) { 
    return $row["student1"]; 
} 

Если вы ждете более одного результата строки, то вам просто нужно вызвать FETCH_ASSOC() еще раз для каждой строки, пока она не вернет вам ничего (маркировка конца строк результатов).

+0

Вы имеете в виду студент1 или $ student1name? – user1666767

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