致命错误:调用成员函数bind_param()错误

时间:2013-07-31 14:05:57

标签: php mysqli prepared-statement

我正在尝试将数据插入到表中但是我遇到了这个令人沮丧的错误,我无法弄清楚是什么问题。错误如下:

Fatal error: Call to a member function bind_param() on a non-object

我已经读过它意味着prepare正在返回false ..这是发生错误的代码

$insert = $mysqli->prepare("insert into `hm_desktop`(`username`, `title`, `condition`, `description`, `price`, `brand`, `color`, `hard_drive_capacity`, `others`, `graphics_card`, `ram_capacity`, `operating_system`, `os_edition,` `processor_type`, `processor_speed`, `model`, `product_series`, `included_items`,  `country`, image_one, image_two, image_three, image_four, image_five, `date`) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$insert->bind_param('sssssssssssssssssssss', $username, $title, $cond, $desc, $price, $brand, $color, $hard_drive_type, $others, $garphics_card, $ram_capacity, $operating_system, $os_edition, $processor_type, $processor_speed,$model, $product_series, $included_items,  $country, $random_name_generated, $i2, $i3, $i4, $i5, $date);
$insert->execute();

我已经尝试了几个小时,但似乎没有任何工作......我在这里缺少什么?请帮忙

2 个答案:

答案 0 :(得分:0)

我看到两个问题:

你有21个s和25个变量。

你拼错了graphics_card(除非你声明它的拼写方式相同)

请改用此行:

$insert->bind_param('sssssssssssssssssssssssss', $username, $title, $cond, $desc, $price, $brand, $color, $hard_drive_type, $others, $graphics_card, $ram_capacity, $operating_system, $os_edition, $processor_type, $processor_speed,$model, $product_series, $included_items,  $country, $random_name_generated, $i2, $i3, $i4, $i5, $date);

另外,os_edition在逗号的错误一侧有勾号。

答案 1 :(得分:0)

你的SQL中有错误。

os_edition之后的逗号在反引号内,它应该在外面:

....ating_system`, `os_edition,` `processor...

....ating_system`, `os_edition`, `processor...

那,以及@aynber关于s,变量和graphics_card的内容。