2009-09-03 16 views
2

當在mysql數據庫中插入一行時,字符串值需要用整數不需要的引號括起來。PHP Mysql自動引用?

是否有任何類或庫自動處理這個問題,以便我可以傳遞給第三方函數一組字段名和值,而不必擔心將字符串值放在引號中?

感謝,

回答

7

你需要擔心的不僅僅是引用;你需要擔心SQL注入。

對於新代碼,請使用PDO而不是mysql_mysqli_函數。在PDO中,使用預準備語句(PDOStatement對象)。

使用預處理語句,您永遠不必將引號括起來並停止SQL注入。

3

如果使用PDO,那麼你就不需要擔心這樣的事情。

查看PDO::prepare的一些示例。

1

當我使用drupal時,默認行爲db_query("SELECT col FROM tab WHERE id=%d",$id)可以爲你處理。

這與在查詢中首先使用sprintfmysql_real_escape_string類似。 (不推薦),你可以自己實現它,從code they show,注意他們使用的方法preg_replace_callback(),您可以點擊該..

傳統的方式,如果你忽略PDO

<?php 
// Connect 
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') 
    OR die(mysql_error()); 

// Query 
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", 
      mysql_real_escape_string($user), 
      mysql_real_escape_string($password)); 
?>