2013-10-21 56 views
0

如何將php變量放入查詢中?如何編寫使用PHP變量的MySQL查詢?

$shopid = $pdo->query('SELECT shopid FROM `shop` WHERE shopname='$shopname'')->fetchAll(PDO::FETCH_ASSOC); 

這不是工作,錯誤消息顯示: 「解析錯誤:語法錯誤,意外 '$ SHOPNAME'(T_VARIABLE)」

回答

4

沒有

不要插入參數這種方式。您應該使用bindParam

$statement = $db->prepare('SELECT shopid FROM shop WHERE shopname=:shopname'); 
$statement->bindParam(':shopname', $shopname, PDO::PARAM_STR); 
$statement->execute(); 
+0

謝謝,但如何檢索值並顯示回顯? 注意:Array to string conversion – alvin890101

0

你沒有適當的包裝您的查詢。

$shopid = $pdo->query("SELECT shopid FROM `shop` WHERE `shopname`='$shopname'"); 
+1

不,這太可怕了。你應該使用[bindParam](http://php.net/manual/en/pdostatement.bindparam.php)。此外,你有一個SQL語法錯誤。 –

-2

試試這個:

$查詢= 「選擇shopid從商店,SHOPNAME = '」 $ SHOPNAME。 「'」;

$結果= mysql_query($查詢);

+0

請解釋這個查詢有什麼問題? $ shopname是PHP變量,由商店名稱 – Sandesh

1

如果$shopname從不受信任的源來了,你是SQL注入敞開的。爲了解決這個問題,你應該使用PDO的,它是事先準備好的聲明API:

$query = $pdo->prepare("SELECT shopid FROM shop WHERE shopname = ?"); 
$query->bindValue(1, $shopname, PDO::PARAM_STR); 
$query->execute(); 

$shopid = $query->fetchAll(PDO::FETCH_ASSOC); 
0

如果你支持的PDO,爲什麼不使用的準備,而且是更安全的。

$stmt = $pdo->prepare('SELECT shopid FROM shop WHERE shopname=:shopname'); 
$stmt->bindParam(':shopname', $shopname); 
$shopname = $yourdefined; 
$stmt->execute(); 

$stmt->bindColumn(1, $shopid); 
    while($stmt->fetch()){ 
     echo $shopid,PHP_EOL; 

    } 

好了,你也可以使用基本的SQL是這樣的:

$shopid = $pdo->query('SELECT shopid FROM `shop` WHERE shopname=\'{$shopname}\'')->fetchAll(PDO::FETCH_ASSOC); 
-1

'...'。 $ shopname。 '...'

使用點加入多於一個字符串