#mysql #sql
#mysql #sql
Вопрос:
У меня где-то разорван этот код, но у меня возникают проблемы при попытке отфильтровать результаты с помощью предложения WHERE. Что я хотел бы сделать, так это включить в оператор предложение WHERE, например WHERE name=’John’, чтобы получить только определенные записи, связанные с именем пользователя, а не все результаты для всех, как это делает текущий код. Вот мой код:
$query=mysql_query("SELECT @rownum := @rownum 1 AS urutan,t.*
FROM customer t,
(SELECT @rownum := 0) r");
$data = array();
while($r = mysql_fetch_assoc($query)) {
$data[] = $r;
}
$i=0;
Комментарии:
1. вы можете написать ‘Select … , т.* ОТ customer t, где name = ‘John»… какой язык вы используете? пожалуйста, пометьте его
2. Это, очевидно, не Oracle. Я удалил тег.
3. почему вы не можете просто использовать предложение where?
Ответ №1:
Вы действительно не должны использовать функции mysql_ *
$query = "SELECT @rownum := @rownum 1 AS urutan,t.*
FROM customer t,
(SELECT @rownum := 0) r WHERE t.name=?"
$stmt = mysqli_prepare($link, $query)
mysqli_stmt_bind_param($stmt,"s","Eric");
mysqli_stmt_execute($stmt);
Комментарии:
1. @e4c5 … да … mysql_ обесценился, и, как я упоминал в своем первоначальном сообщении, я просто вставил все, как это было, из фрагмента, из которого я его взял. С тех пор в моей рабочей среде я перешел на mysqli_. У меня есть только проблемы с пониманием PDO, но я буду продолжать учиться. Большое вам спасибо за ваш ответ.
Ответ №2:
Предложение WHERE находится в конце:
$query = mysql_query("SELECT @rownum := @rownum 1 AS urutan, t.*
FROM customer t,
(SELECT @rownum := 0) r WHERE t.name = 'John'");
Комментарии:
1. ты крутой братан! Сработало как по волшебству! Я попробовал тот же код в конце инструкции, но я никогда не ставил t. в начале имени столбца. Что означает «t.» в операторе?
2. На самом деле это не должно иметь значения. Вы присвоили таблице
customer
псевдонимное имяt
. Вы также создаете таблицу с одной записью «на лету», которую вы вызываетеr
. Итак, поскольку в запросе более одной таблицы, я использую квалификатор таблицы, чтобы указать, где находится столбец.name
принадлежитt
, так что этоt.name
.3. Теперь я понял. Большое спасибо!