私はこの問題を抱えて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 インジェクションを防ぐ最善の方法であると言われました。本当に必要なセキュリティはこれだけですか? (つまり、当然のことながら、セキュリティが強化されていると確信していますが、これは小さなイエロー ページ タイプのサイトです)。