public function insert_new_listing($listing_assoc_array) {
global $public_connection;
$date = (string) date("Y-m-d");
$hit_count = 0;
if ($stmt = new mysqli_stmt($public_connection, 'INSERT INTO laptops (brand_name, title, description, price, discount, last_change_date, hit_count) VALUES (?,?,?,?,?,?,?)')) {
/* bind parameters for markers */
$stmt->bind_param(
"sssdisi",
$listing_assoc_array['brand_name'],
$listing_assoc_array['title'],
$listing_assoc_array['description'],
$listing_assoc_array['price'],
$listing_assoc_array['discount'],
$date,
$hit_count
);
/* execute query */
$stmt->execute();
我在prepare语句和bind_param中有正确的数字(7),所以我不知道为什么会发生这种情况。
正如我在上面的注释中提到的,new mysqli_stmt()
不太可能返回falsey值。相反,您应该使用mysqli::prepare
方法,例如...
public function insert_new_listing(mysqli $conn, array $listing) {
$stmt = $conn->prepare('INSERT INTO laptops (brand_name, title, description, price, discount, last_change_date, hit_count) VALUES (?,?,?,?,?,NOW(),0)');
if (!$stmt) {
throw new Exception($conn->error, $conn->errno);
}
/* bind parameters for markers */
$stmt->bind_param('sssdi',
$listing['brand_name'],
$listing['title'],
$listing['description'],
$listing['price'],
$listing['discount']);
/* execute query */
if (!$stmt->execute()) {
throw new Exception($stmt->error, $stmt->errno);
}
您可能会注意到,我使用了文本0
和now()
而不是绑定$hit_count
和$date
。找不到绑定已知静态值的任何理由。
我还将mysqli
实例作为方法依赖项传入,而不是依赖于全局值。
我得到这个错误:
我正在使用编写我认为是相当基本的准备好的状态。语句如下所示(其中是实例): 这将失败,在中的参数数不匹配。
问题内容: 我一直在尝试使用准备好的语句在PHP中编写登录表单,但是每次尝试登录时,都会出现以下错误: mysqli_stmt :: bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配 这是我的代码: 有人可以告诉我为什么会这样吗? 问题答案: 如果这确实是您的代码,则可能是$ _POST [“ name”]或$ _POST [“ password”]是一个数组,因此bin
我在准备好的语句(mysqli)上遇到了麻烦,我正在进行连接,一切都是正确的,直到我试图绑定参数,问题是,我试图绑定63个值,我检查了很多次我有正确的值,因为我找不到导致错误的错误: 以下是我的代码: 希望有人能解释我在这里失败了什么!
首先,我知道这是一个重复的问题,我问的是同样的问题。但是我已经阅读了所有与相同问题相关联的解决方案,但是当我遵循建议的解决方案时,它将触发更多的警告出现。这就是我的代码 获取 只为得到这些警告; 警告:mysqli_stmt::bind_param():第119行C:\xampp\htdocs\gsd\emergency\records.php中的变量数与准备好的语句中的参数数不匹配 警告:mys