2009-12-18 5 views
1

это, что можно использовать ГДЕ как это;mysql где условие вопрос

$no = $_GET['no']; 
$query = "SELECT * FROM `numbers` WHERE `myno` - $no = 4"; 
... 

Если нет, как я могу получить строки, как показано ниже?

EDIT: быть более ясным,

$today = date("Y-m-d"); 
$query = "SELECT * FROM `dates` WHERE date - $today = 7"; 

я хочу, чтобы найти строки, которая имеет поле даты, которое 7 дней назад

ТНХ

+2

Что сказать, когда вы пытаетесь его –

+2

Кроме того, что есть некоторые серьезные дефицит безопасности Ввод переменной получить непосредственно в SQL.. запрос - огромный нон. –

+0

на самом деле я не могу попробовать его сейчас, я просто хотел спросить, я попробую, когда я нахожусь на своем компьютере. –

ответ

3

Если поле поле даты

$query = "SELECT * FROM `numbers` WHERE `myno` = DATE_SUB(`myno`, INTERVAL 7 DAY)" 

Edit: или я предпочитаю эту

$query = "SELECT * FROM `numbers` WHERE DATEDIFF(NOW(), `myno`) = 7" 

Take a look at the date functions

+0

они выглядят, что я ищу, но почему вы предпочитаете 2. o ne? –

+0

Просто потому, что писать меньше ^^, а немного легче читать :) – ThoKra

+0

О, я пробовал, но он не работал с этим «WHERE date_added> = DATE_SUB (' $ dt', INTERVAL 7 DAY) ORDER BY RAND() LIMIT 0,8 " –

1

Вы можете сделать:

$query = "SELECT * FROM `numbers` WHERE `myno` = 4 + $no" 
+0

, но он отличается от моей цели –

2

Вы можете делать всевозможные выражения в предложении WHERE, но будьте осторожны : Если вы

SELECT * FROM numbers WHERE myno - ? = 4 

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

SELECT * FROM numbers WHERE myno = 4 + ? 

будет иметь возможность использовать индекс myno.

+0

Да, тот же принцип применяется ... использовать форма, в которой вы сравниваете переменную с постоянным выражением, а не сравниваете переменное выражение с константой. Таким образом, индексы будут работать. – NickZoic

0

$ weekAgo = дата ("ГМД", StrToTime ("-1 неделя"));

$ запрос = «SELECT * FROM numbers WHERE myno =„$ weekAgo“;

+0

Зачем использовать PHP для определения времени, когда MySQL имеет отличные функции для этого? – ThoKra

+0

Зачем использовать MySQL для определения времени, когда PHP имеет отличные функции для этого? 1. Похоже, что у создателя не было полного понимания MySQL, поэтому я предоставил альтернативный ответ PHP. 2. Если он собирается проверять несколько раз, вам не понадобится MySQL, чтобы определить дату несколько раз, она уже хранится в переменной. – jn1kk

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