2012-08-07 136 views
1

我很新的MYSQL和預處理語句。我有幾個需要更改爲準備語句的查詢。問題出在這個REGEXP查詢:PHP MySQL的REGEXP預處理語句

$objects = mysql_query("SELECT * FROM $table WHERE parent REGEXP ',". 
    $item .",|^". $item .",|,". $item ."\$|^". 
    $item ."\$'") or die(mysql_error()); 

你怎麼把它轉換成一個準備好的聲明與佔位符?

+0

您可以從查詢做一份聲明中W/O改變它。嘗試是這樣的: '$ SQL = 「SELECT * FROM WHERE父REGEXP',| ^?|,\ $ |^\ $???」' ,然後用它是這樣的: '$ DB->製備($ SQL,陣列($表,$項目,項目,項目,即項目));' 如果將選擇使用 [PDO](php.net/manual/en/book.pdo製備querise .php),使用你的值重新生成'?'沒有問題。另一個不錯的選擇是[AdoDB](http://adodb.sourceforge.net/)。 – tijs 2012-08-07 16:31:55

+1

不是說它會幫助回答你的問題,但應該指出,你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不確定使用哪一個,[閱讀這篇文章](http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)。 – Matt 2012-08-07 16:32:56

回答

1

你應該準備的語句查詢中使用CONCAT函數,而不是採用了經典。連接符號用於定期查詢。這應該做的伎倆:)