Re: [請益] SQL想請問多重條件查詢的寫法
※ 引述《qm29213039 (崩啾)》之銘言:
: 我現在想做一個查詢系統
: 可以輸入ID,名字...等屬性去做查詢,可以只輸入一個或者多個查詢條件去做查詢
: GOOGLE看到有教學文是判斷有沒有GET到值
: 如果有GET到值,則SELECT GET到的值。
: 如果沒有,就讓它等於欄位的名稱
: (例如: id = id,這樣輸出恆等於一,SELECT AND 1就等於沒有這個選項)
原來還有這招,今天學到了Orz...
: 我的程式是這樣寫..
: if ($_GET['Name'] == ""){
: $Name = Name;
: }
: ELSE{
: $Name = $_GET[$Name]
: }
$_GET['Name'] ?
老話一句:注意SQL injection
: SELECT * FROM main_info WHERE Name = '$Name' AND ID = '$ID';
: 也就是說,當我ID跟NAME都有輸入的時候...,SELECT語句會變成
: SELECT * FROM main_info WHERE Name = '$_GET[Name]' AND ID = '$_GET[ID]';
: 其中一個沒有輸入的時候,則會變成
: SELECT * FROM main_info WHERE Name = 'Name' AND ID = '$_GET[ID]';
: 然後這邊就出現問題了
: 因為WHERE Name = 'Name'變成會去查Name的欄位有沒有符合Name的結果
: 請問我該怎麼修正這個錯誤,或者是有比較好的方法可以解決這個問題呢?
Name = 'Name'
和
Name = Name
是兩件不同的事情
理由嘛...
不知道有沒有發現到
MySQL的表格名稱和欄位名稱可以用倒引號(``)括起來,代表的是一個變數
而單引號或雙引號括起來的代表的是常數字串
所以上面兩個運算式就會等價於下面這兩個
1. `Name` = 'Name' (這樣的寫法就有點像PHP的 if ($Name == 'Name') )
2. `Name` = `Name` (當然每筆資料都會是True,如同 if ($Name == $Name) )
呃...再來應該可以BJ4了吧XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.68.4
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
4
18
6
16