【问题标题】:PHP mysql REGEXP Prepared StatementPHP mysql REGEXP 准备好的语句
【发布时间】: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


【解决方案1】:

您应该在准备好的语句查询中使用 CONCAT 函数,而不是使用经典的 .常规查询的连接符号。这应该可以解决问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2016-09-10
    • 2011-09-16
    • 2015-06-27
    • 1970-01-01
    相关资源
    最近更新 更多