iT邦幫忙

0

PHP要搜尋資料庫 工號或姓名 輸入其中一種即可

young122333 1 年前2546 瀏覽

$MSSQLconnCode = $_POST["var_Code"];
$MSSQLconnName = $_POST["var_Name"];


這邊為資料庫程式碼

where Employee.Code = " . $MSSQLconnCode)); <<<單一搜尋OK

我想問的是我想把$MSSQLconnCode和$MSSQLconnName加入where
把where那一行改成 where (e.Code = ('') or e.CnName = ('王小名'))
因為資料庫前後都需要加" ,如果最後沒加"就不能加變數
那我必須將下面PHP如何修改才能正常運作??
謝謝
where (e.Code = " . $MSSQLconn " or e.CnName = ". $MSSQLconn));

海綿寶寶 iT邦超人 1 級 ‧ 1 年前 檢舉
用兩種不同的程式語言
同一樣的事情

犯同樣的錯誤
問不一樣的問題
同樣熱心的邦友回答問題

這大概就是人生
落寞
1
外獅佬
iT邦大師 1 級 ‧ 1 年前
最佳解答

暈...資料庫應該是用單引號('),PHP用雙引號(")
兩個應該不衝突吧落寞

看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 1 年前 檢舉

如果你堅持兩者都要用雙引號,你應該要知道一件事...
那就是跳脫字元(\)

&lt;pre class="c" name="code">
where (e.Code = \"" . $MSSQLconn "\" or e.CnName = \"". $MSSQLconn."\""));
外獅佬 iT邦大師 1 級 ‧ 1 年前 檢舉
young122333 iT邦新手 4 級 ‧ 1 年前 檢舉

不知道是不是ODBC有問題,我試過了還是有錯誤
想詢問一下,如果把SQL切成兩段
PHP該如何在處理??謝謝

young122333 iT邦新手 4 級 ‧ 1 年前 檢舉

young122333 iT邦新手 4 級 ‧ 1 年前 檢舉

錯誤訊息是 字串的部分有問題....
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

fillano iT邦超人 1 級 ‧ 1 年前 檢舉
0
msnman
iT邦新手 1 級 ‧ 1 年前

sql="select * from list1 where e.Code = ( ' " . $MSSQLconn " ' ) or e.CnName = ( ' " . $MSSQLconn " ' ) ";

看更多先前的回應...收起先前的回應...
young122333 iT邦新手 4 級 ‧ 1 年前 檢舉

),PHP用雙引號(")

好像不太行,如果雙引號擺在最後面,種串都會被當成SQL,就沒變數了
請問一下PHP如何切兩段SQL

msnman iT邦新手 1 級 ‧ 1 年前 檢舉

雙引號括的是粗體字,變數是被單引號括起來的。請看清楚。

msnman iT邦新手 1 級 ‧ 1 年前 檢舉

sql="select * from list1 where e.Code = ( ' " $MSSQLconn " ' ) or e.CnName = ( ' " $MSSQLconn " ' ) ";
點要拿掉。

msnman iT邦新手 1 級 ‧ 1 年前 檢舉

sql="select * from list1 where e.Code = ( ' " && $MSSQLconn && " ' ) or e.CnName = ( ' " && $MSSQLconn && " ' ) ";

msnman iT邦新手 1 級 ‧ 1 年前 檢舉

抱歉,弄混了,這個是vb的寫法。
php是用. ,所以在兩個字串中間加變數是用 .變數.

0
louischou
iT邦新手 4 級 ‧ 1 年前

young122333提到:
where (e.Code = " . $MSSQLconnCode " or e.CnName = ". $MSSQLconnName));

$sql = "select ---- ".$stra." ----- ".$strb."-----";

如果你需要插入字串的話兩邊都要加點

0
wiseguy
iT邦超人 1 級 ‧ 1 年前

young122333提到:
想詢問一下,如果把SQL切成兩段
PHP該如何在處理??謝謝

請使用 php 的 heredoc,這樣就想用單引號或雙引號都無妨,也可以隨意折行了。比如:

&lt;pre class="c" name="code">$sql = &lt;&lt;&lt; EoT
select 欄位1,
       欄位2,
       欄位3
from TABLE
where eCode = "$MSSQLconnCode"
or e.CnName = "$MSSQLconnName"
EoT;
0
q00153
iT邦新手 5 級 ‧ 1 年前

小弟通常會寫成下面這樣,
將SQL字串放在雙引號裡面,
PHP變數用大括號框起來就行{}, (好處是好看,且陣列、物件也可使用)
SQL語法的部分全部用大寫,
跟資料表有關的欄位與資料表名稱用 `` 包起來 (MySql、MariaDB)。

&lt;pre class="c" name="code">
$sql = "
  SELECT * 
  FROM `table` AS `e` 
  WHERE (
       `e`.`Code`   = '{$MSSQLconnCode}' 
    OR `e`.`CnName` = '{$MSSQLconnName}'
  );"

如果可以輸入部分姓名或工號查詢,
再改成LIKE。

&lt;pre class="c" name="code">
$sql = "
  SELECT * 
  FROM `table` AS `e`
  WHERE (
       `e`.`Code`   LIKE '%{$MSSQLconnCode}%' 
    OR `e`.`CnName` LIKE '%{$MSSQLconnName}%'
  );"

我要發表回答

立即登入回答