2012-08-07 132 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函数,而不是采用了经典。连接符号用于定期查询。这应该做的伎俩:)