Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换为PDO regexp绑定错误_Regex_Pdo_Bind - Fatal编程技术网

转换为PDO regexp绑定错误

转换为PDO regexp绑定错误,regex,pdo,bind,Regex,Pdo,Bind,我正在尝试从mysql转换为使用PDO。我被这个错误难住了。在大多数情况下,除了绑定变量外,我都能正常工作 Fatal error: Call to a member function bindParam() on a non-object in 以下是我尝试过的: global $keyword; $_link = new PDO("mysql:host=$host;dbname=$db_name", "$username", "$password"); $_query = sprint

我正在尝试从mysql转换为使用PDO。我被这个错误难住了。在大多数情况下,除了绑定变量外,我都能正常工作

Fatal error: Call to a member function bindParam() on a non-object in
以下是我尝试过的:

global $keyword;

$_link = new PDO("mysql:host=$host;dbname=$db_name", "$username", "$password");

$_query = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM PLD_ANINJA WHERE `Text` REGEXP CONCAT('[[:<:]]',:keyword,'[[:>:]]') LIMIT %d,%d",
    SmartyPaginate::getCurrentIndex(), SmartyPaginate::getLimit());
$_query->bindParam(':keyword',$keyword, PDO::PARAM_STR);
$_query->execute();
global$关键字;
$_link=new PDO(“mysql:host=$host;dbname=$db_name”,“$username”,“$password”);
$\u query=sprintf(“从PLD\u ANINJA中选择SQL\u CALC\u FOUND\u ROWS*,其中`Text`REGEXP CONCAT('[[:]])限制%d,%d”,
SmartyPaginate::getCurrentIndex(),SmartyPaginate::getLimit());
$\u query->bindParam(':keyword',$keyword,PDO::PARAM\u STR);
$\u查询->执行();
以下是最初的工作原理:

global $keyword;

$_query = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM PLD_ANINJA WHERE `Text` REGEXP '[[:<:]]" . $keyword . "[[:>:]]' LIMIT %d,%d",
    SmartyPaginate::getCurrentIndex(), SmartyPaginate::getLimit());
global$关键字;
$\u query=sprintf(“从PLD\u ANINJA中选择SQL\u CALC\u FOUND\u ROWS*,其中`Text`REGEXP'[[::]]'限制%d,%d”,
SmartyPaginate::getCurrentIndex(),SmartyPaginate::getLimit());

您试图调用字符串上的PDO方法,而不是PDO语句对象。您需要调用
$\u link->prepare()

$\u query=$\u link->prepare(“从PLD\u ANINJA中选择SQL\u CALC\u FOUND\u ROWS*,其中`Text`REGEXP CONCAT('[[:]])LIMIT:start,:count”);
$\u query->bindParam(':keyword',$keyword,PDO::PARAM\u STR);
$\u query->bindValue(':start',SmartyPaginate::getCurrentIndex());
$\u query->bindValue(':count',SmartyPaginate::getLimit());
$\u查询->执行();
$_query = $_link->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM PLD_ANINJA WHERE `Text` REGEXP CONCAT('[[:<:]]',:keyword,'[[:>:]]') LIMIT :start,:count");
$_query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$_query->bindValue(':start', SmartyPaginate::getCurrentIndex());
$_query->bindValue(':count', SmartyPaginate::getLimit());
$_query->execute();