【发布时间】:2012-08-07 16:25:26
【问题描述】:
我对 MYSQL 和预处理语句非常陌生。我有一些查询需要更改为准备好的语句。问题在于这个 REGEXP 查询:
$objects = mysql_query("SELECT * FROM $table WHERE parent REGEXP ',".
$item .",|^". $item .",|,". $item ."\$|^".
$item ."\$'") or die(mysql_error());
您如何将其转换为带有占位符的准备好的语句?
【问题讨论】:
-
您可以从该查询中执行准备好的语句,而无需更改它。尝试这样的事情:
$sql = "SELECT * FROM ? WHERE parent REGEXP ',?,|^?,|,?\$|^?\$'"然后像这样使用它:$db->prepare($sql, array($table,$item,item,item,item));如果您选择使用 [PDO](php.net/manual/en/book.pdo.php) 准备查询,它不会有任何问题用你的价值观重新设置?。另一个不错的选择是AdoDB。 -
并不是说它会帮助回答你的问题,但应该注意的是,你应该停止使用
mysql_*函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,read this SO article。
标签: php mysql regex prepared-statement