2016-03-01 30 views
0

我討厭PHP,但我必須這樣做。我花了最近2天搜索一個簡單的方法來編寫一個LIKE子句的SQL Select,其中參數是從表單上的lname輸入文本傳遞的。現在,它必須是SQL Server,而不是MYSQL使用SQL Server的PHP(不需要MySQL) - 在WHERE子句中使用LIKE選擇語句

所以這是我迄今爲止所做的。

function getActorDetailsLnameOnly($lname) { 
    // the SQL query to be executed on the database 

    $query = "select NameFirst, NameLast, Age, Gender from actor where NameLast like '%$lname%'"; 

    return executeQuery($query); 
} 
的index.php

,我寫了下面:

if ((!empty($_REQUEST['lname'])) and (empty($_REQUEST['age']) and (empty($_REQUEST['gender'])))) { 

     $lname = (string) $_GET['lname']; 

     $sql = getActorDetailsLnameOnly($lname); 
     foreach ($sql as ...) { 
      extract(...); 
      ... 

的代碼返回一個值,但它遠不及正確的。這就像在SELECT語句中請求A並返回Z.我無法弄清楚。

+1

發佈您的測試用例。 – Samir

+0

你寫了'executeQuery'嗎?這個實例中的Mysql和sqlserver將具有相同的語法;取決於您使用的驅動程序。我們還需要知道您正在查詢的內容以及返回的內容。 – chris85

+0

我正在查詢使用PDO的SQL Server,並且我試圖返回表中每個值的姓氏,例如%whatever%我輸入姓氏:」> – RazorSharp

回答

2

您通過$_REQUEST['lname']檢查表格輸入值,然後指定變量$lname = (string) $_GET['lname'];。如果表單方法是POST那麼$_REQUEST['lname']將具有該值並且$_GET['lname']將是空的。結果like模式將爲'%%',這實際上是除NULL之外的所有內容。

基本上,$_GETGET$_POSTPOST$_REQUEST爲任何。

嘗試使用$lname = (string) $_REQUEST['lname'];

+0

使用您的回覆給了我一個好主意。當我應用你的建議時,我也改變了我的SQL查詢。現在,它就像一個魅力!新查詢是:: $查詢=「選擇NameFirst,NameLast,年齡,性別從演員WHERE NameLast像'%{$ _ POST ['lname']}%'」; – RazorSharp

+0

@ dot3tech很高興幫助。請通過[如何在SQL Server中使用PHP轉義字符串?]來清理輸入內容(http://stackoverflow.com/questions/574805/how-to-escape-strings-in-sql-server-using-php) –