Фильтровать оператор SQL SELECT с помощью предложения WHERE

#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. Теперь я понял. Большое спасибо!