2016-11-29 34 views
0

我使用事先準備好的聲明,並執行mysqli_stmt :: bind_param():

$search = trim($_GET['s']); 
if($stmtgetproducts = $mysqli->prepare("SELECT s.store_id, product_id, product_name, product_desc, product_price, product_discount, product_views, product_date, product_code, product_category, product_image1, product_image2, sale_id,s.store_name,s.store_username 
    FROM store_products sp 
    INNER JOIN store_product_categories spc ON sp.product_category=spc.id 
    INNER JOIN store s ON sp.store_id=s.store_id WHERE MATCH(product_name, product_desc) AGAINST('?' IN BOOLEAN MODE);")){ 
$stmtgetproducts->bind_param("s",$search); 
$stmtgetproducts->execute(); 
$getproducts=$stmtgetproducts->get_result(); 
$stmtgetproducts->close(); 
} 
else 
{ 
echo $mysqli->error; 
} 

由於MySQL的PHP​​變量數不匹配的在準備好的聲明參數號,我給它只是一個參數採取作爲參數,並結合PARAM只是一個是$ SEARCH它給了我這個錯誤

mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement 

這一點,如果形式

<form action="" method="GET"> 
        Search Product: <input type="text" name="s" placeholder="Enter product name"> 
       </form> 

如果我改變了

$stmtgetproducts->bind_param("ss",$search); 

那麼這個錯誤出現

mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables 

回答

0
$stmtgetproducts = $mysqli->prepare("SELECT s.store_id, product_id, product_name, product_desc, product_price, product_discount, product_views, product_date, product_code, product_category, product_image1, product_image2, sale_id,s.store_name,s.store_username 
    FROM store_products sp 
    INNER JOIN store_product_categories spc ON sp.product_category=spc.id 
    INNER JOIN store s ON sp.store_id=s.store_id WHERE MATCH(product_name, product_desc) AGAINST(? IN BOOLEAN MODE);")) 

改變了我準備語句這個

+0

取下字符串的分號,我們要經常檢查輸入的參數不應該空,$搜索變量不會清空查詢。這似乎確定,一切都是正確的。 –

相關問題