带数组元素的全文搜索 pdo
fulltext search pdo with array elements
我认为在更新 phpmyadmin 之前有效的全文搜索查询有问题。让我们开始吧:
我从第一个 select 查询一个名为 $keywordse
的数组 $keywordse = $resi->fetchAll(PDO::FETCH_ASSOC);
如果我 运行 var_dump($keywordse);
我得到以下输出:
array(1) { [0]=> array(4) {
["keyword1"]=> string(4) "test"
["keyword2"]=> string(5) "asdfr"
["keyword3"]=> string(4) "roof"
} }
在第一个查询之后,我添加了 $keywordsonetoeight = implode(',', $keywordse);
来为第二个查询转换数组。在这一行我得到
Notice: Array to string conversion
第二个查询:
try {
$dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //
$sql = "SELECT id, autorid, autor, title, text, time
FROM posts
WHERE MATCH (title, text) AGAINST ('$keywordsonetoeight')
ORDER BY id DESC";
if ($res = $dbh->query($sql)) {// need to add this line in your code
// then after fetchColumn
$result = $res->fetchAll();
}
}
catch(PDOException $e)
{
//echo $e->getMessage();
}
第二个查询或变量 $keywordsonetoeight
有什么问题吗?
你的转换是错误的,你必须转换 $keywordse 的第一个条目才能将关键字作为字符串。
$keywordsonetoeight = implode(',', $keywordse[0]);
我不确定逗号分隔是否正确,也许您只需要在查询中使用空格,但我现在无法检查。
我认为在更新 phpmyadmin 之前有效的全文搜索查询有问题。让我们开始吧:
我从第一个 select 查询一个名为 $keywordse
的数组 $keywordse = $resi->fetchAll(PDO::FETCH_ASSOC);
如果我 运行 var_dump($keywordse);
我得到以下输出:
array(1) { [0]=> array(4) {
["keyword1"]=> string(4) "test"
["keyword2"]=> string(5) "asdfr"
["keyword3"]=> string(4) "roof"
} }
在第一个查询之后,我添加了 $keywordsonetoeight = implode(',', $keywordse);
来为第二个查询转换数组。在这一行我得到
Notice: Array to string conversion
第二个查询:
try {
$dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //
$sql = "SELECT id, autorid, autor, title, text, time
FROM posts
WHERE MATCH (title, text) AGAINST ('$keywordsonetoeight')
ORDER BY id DESC";
if ($res = $dbh->query($sql)) {// need to add this line in your code
// then after fetchColumn
$result = $res->fetchAll();
}
}
catch(PDOException $e)
{
//echo $e->getMessage();
}
第二个查询或变量 $keywordsonetoeight
有什么问题吗?
你的转换是错误的,你必须转换 $keywordse 的第一个条目才能将关键字作为字符串。
$keywordsonetoeight = implode(',', $keywordse[0]);
我不确定逗号分隔是否正确,也许您只需要在查询中使用空格,但我现在无法检查。