PHP mysql SELECT QUERY с помощью элемента Or

mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2"); 

Это не работает.

В основном, я хочу, чтобы иметь возможность выбрать его, где id – значение одной переменной ИЛИ другое.

Благодарю.

EDIT: столбец ID является числовым.

Solutions Collecting From Web of "PHP mysql SELECT QUERY с помощью элемента Or"

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

 mysql_query("SELECT * FROM foo WHERE id =$foo OR id = $foo2"); 

Однако это решение имеет очень плохой запах кода!

Во-первых, вот почему IN существует: уметь писать

 mysql_query("SELECT * FROM foo WHERE id IN ($foo, $foo2)"); 

И, во-вторых, вы вводите в запросе строки без привязки? Если вы, ваш код уязвим для SQL-инъекций ! Бегите и цитируйте свои переменные, чтобы быть в безопасности, как это (в общем случае):

 $query = sprintf("SELECT * FROM foo WHERE id IN ('%s', '%s')", mysql_real_escape_string($foo), mysql_real_escape_string($foo2)); mysql_query($query); 

или, альтернативно, как это, поскольку в этом конкретном сценарии вы знаете, что мы говорим о целочисленных значениях:

 $query = sprintf("SELECT * FROM foo WHERE id IN (%s, %s)", intval($foo), intval($foo2)); mysql_query($query); 

Сноска: Я знаю, что при использовании sprintf как это, можно также обрабатывать целочисленные значения, просто используя %d вместо if %s в качестве спецификатора формата. Тем не менее, я считаю, что доказать, что вы правильно избегаете переменных, должно быть возможным, просто взглянув на одно место (список параметров) вместо нескольких мест (я использовал intval для переменной? Или, может быть, я этого не сделал, но я использую %d в строке формата, так что я все еще в порядке?). Это может показаться противоречивым, но оно более устойчиво перед лицом модификаций.

Я думаю, вы забыли последнего 'персонажа

 mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2'"); 

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

 mysql_query("SELECT * FROM foo WHERE id = $foo OR id = $foo2"); 

Попробуй это:

 mysql_query(sprintf("SELECT * FROM foo WHERE id = %s OR id = %s", $foo, $foo2)); 

Я рекомендую использовать mysql_error () для получения mysql-ошибок (если существует).

 mysql_query( .. ) or die('Erro:'.mysql_error()); 

mysql_error возвращает последнюю ошибку, возникшую в mysql.