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,它会发出一个错误,说&#34;变量的数量与预备语句中的参数数量不匹配&#34;。
没有$ search的另一种情况正常。
这很混乱因为有两个??我绑定两个字符串作为参数。不太了解发生了什么。
答案 0 :(得分:1)
这很令人困惑,但你可以尝试:
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();
}