2017-05-11 50 views
2

我想用兩個字符串參數構造一條SQL語句。基本上我正在用php查詢MS Access表。php MS Access多個字符串參數的SQL查詢

下面是我的語法正確嗎?

$parm1 = "TPMS"; 
$parm2 = "Clamp In"; 

$sql = "SELECT * FROM archive where productfamily like ".$parm1 ."and where productderivative like". $parm2; 

現在我試了一個名爲$ parm1的參數字符串,字符串的語法如下。請注意,這是我用php查詢的MS Access表。

$parm1 = "'TPMS'"; 

現在相應的MS Access SQL語句是如下這些作品:

$sql = "SELECT * FROM archive where productfamily like $parm1 order by fullname asc" 

現在用兩個參數相應的MS Access SQL語句不工作。有人可以告訴我爲什麼第二個參數在SQL語句中不起作用嗎?這可能是我的語法嗎?

$sql = "SELECT * FROM archive where productfamily like $parm1 and " 
$sql .= "where productderivative like $parm2 order by fullname asc"; 

回答

1

首先,你需要用單引號括住的字符串文字:'

$parm1 = "'TPMS'"; 
$parm2 = "'Clamp In'"; 

$sql = "SELECT * FROM archive where productfamily like ".$parm1 ."and where productderivative like". $parm2; 

其次,LIKE語句十分有用,使用通配符

  1. %百分比符號代表零個,一個或多個字符
  2. ?問號(對於Access)代表單個字符

所以,如果你正在尋找OCCURENCES可能包括TPMS任何地方後,你會

例如:

$parm1 = "'TPMS%'"; 
$parm1 = "'%TPMS'"; 
$parm1 = "'%TPMS%'"; 
$parm1 = "'?T%'"; 
$parm1 = "'T?%?%'"; 
$parm1 = "'T%o'"; 

其中評估以下SQL:

WHERE productfamily LIKE 'TPMS%' --Finds any values that starts with "TPMS" 
    WHERE productfamily LIKE '%TPMS' --Finds any values that ends with "TPMS" 
    WHERE productfamily LIKE '%TPMS%' --Finds any values that have "TPMS" in any position 
    WHERE productfamily LIKE '?T%' --Finds any values that have "T" in the second position 
    WHERE productfamily LIKE 'T?%?%' --Finds any values that starts with "T" and are at least 3 characters in length 
    WHERE productfamily LIKE 'T%o' --Finds any values that starts with "T" and ends with "o" 
+0

明天我會在這工作,謝謝 –

0

我將根據您的情況調整文檔https://www.sitepoint.com/using-an-access-database-with-php/中的代碼。

$dbName = $_SERVER["DOCUMENT_ROOT"] . "yourpathhere\archive.mdb"; 
if (!file_exists($dbName)) { 
    die("Could not find database file."); 
} 
$pdo = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;"); 

$parm1 = 'TPMS'; 
$parm2 = 'Clamp In'; 
$sql = 'SELECT * FROM archive where productfamily like :family and where productderivative like :derivative'; 

$pdo->prepare($sql) 
$pdo->bindParam(':family', $parm1, PDO::PARAM_STR); 
$pdo->bindParam(':derivative', $parm2, PDO::PARAM_STR); 
$pdo->execute(); 

這應該讓你在那裏。這是未經測試的。如果有任何失敗,讓我知道,我會創建一些表並運行它。

+0

Hi Pendo這是一個MS Access數據庫,而不是我正在使用的MYSQL –

+0

請參閱最新的代碼。 – pendo