if (strlen($search) > 0)
{
$query = "SELECT p.product_id,p.account_id,i.image_id,a.email,p.title,p.price,MATCH(p.title) AGAINST('?' IN BOOLEAN MODE) AS score
FROM products AS p
LEFT OUTER JOIN products_images AS i
ON p.product_id = i.product_id AND i.featured=1 AND i.deleted=0
INNER JOIN accounts AS a
ON p.account_id = a.account_id
WHERE MATCH(p.title) AGAINST('?' IN BOOLEAN MODE)
ORDER BY score DESC";
}
else
{
$query = "SELECT p.product_id,p.account_id,i.image_id,a.email,p.title,p.price
FROM products AS p
LEFT OUTER JOIN products_images AS i
ON p.product_id = i.product_id AND i.featured=1 AND i.deleted=0
INNER JOIN accounts AS a
ON p.account_id = a.account_id";
}
//Search the listings
echo "<div class='"row'">";
if ($statement = $mysqli->prepare($query))
{
if (strlen($search) > 0)
{
$statement->bind_param("ss", $search, $search);
}
$statement->execute();
}
这让我非常困惑,但是,如果提供了$search,它会吐出一个错误,指出"变量数与预准备语句中的参数数不匹配"。
没有$search的另一种情况工作正常。
这非常令人困惑,因为有两个??,我绑定两个字符串作为参数。真的不明白发生了什么。
这很令人困惑,但你可以试试:
if (strlen($search) > 0)
{
$query = "SELECT p.product_id,p.account_id,i.image_id,a.email,p.title,p.price,MATCH(p.title) AGAINST('?' IN BOOLEAN MODE) AS score
FROM products AS p
LEFT OUTER JOIN products_images AS i
ON p.product_id = i.product_id AND i.featured=1 AND i.deleted=0
INNER JOIN accounts AS a
ON p.account_id = a.account_id
WHERE MATCH(p.title) AGAINST(:ss IN BOOLEAN MODE)
ORDER BY score DESC";
}
else
{
$query = "SELECT p.product_id,p.account_id,i.image_id,a.email,p.title,p.price
FROM products AS p
LEFT OUTER JOIN products_images AS i
ON p.product_id = i.product_id AND i.featured=1 AND i.deleted=0
INNER JOIN accounts AS a
ON p.account_id = a.account_id";
}
//Search the listings
echo "<div class='"row'">";
if ($statement = $mysqli->prepare($query))
{
if (strlen($search) > 0)
{
$statement->bind_param(':ss', $search);
}
$statement->execute();
}