我遇到了这个问题bind_param
,我不知道出了什么问题:
<?php
$mysqli = new mysqli("$host","$user","$pass","$db");
if(isset($_GET['catName'])) {
$category = "%" . $_GET['catName'] . "%";
}
//setup query
$catSearch = $mysqli->stmt_init();
//search values
$catQuery = "SELECT lister_id,
logo_file_name,
listing_name,
street_address,
city,
state,
zip
FROM listers
INNER JOIN listings
ON listers.lister_id = listings.lister_id
WHERE listings.listing_category LIKE ?";
$catSearch->prepare($catQuery);
$catSearch->bind_param('s', $category);
$catSearch->bind_result($id, $imgfile, $name, $address, $city, $state, $zip);
$catSearch->execute();
$catSearch->store_result();
$mainRows = $catSearch->num_rows();
?>
我得到的警告是:
Warning: mysqli_stmt::bind_param(): invalid object or resource mysqli_stmt in C:\wamp\www\RP\catSearch.php on line 29
让我感到沮丧的是,这种精确的语法将 7 或 8 个其他文档放在一起,就像它一样,但由于某种原因,这个语法一直在中断。我检查了每张桌子,它们都很好(这是上次发生这种情况的问题)。我确保我stmt_init()
在其他一切之前宣布我的好(之前也有问题)。我在整张$_GET['catName']
纸上都印有回声,所以它通过了(曾经也有问题)。
另外,一个更元的问题,但有人告诉我使用 bind_param 是防止 SQL 注入的最佳方法;这真的是我需要的所有安全吗?(我的意思是,在合理的范围内,我确信安全性更高,但这是一个小型黄页类型的网站)。