1

error_reporting一路走来,我已经看过很多次了,所以我想我可能会错误地调用一个值或者没有声明正确的东西。任何可以跳进去告诉我代码怎么了以及为什么仍然出现错误“在非对象上调用成员函数 bind_param()”的人,因为我很难过:

$db=new mySQLi($host,$dbhuser,$dbhpwd,$dbh); 
$insert_stmt = $db->stmt_init();    
$insert_stmt = $db->prepare("INSERT INTO food (id,timestamp,userid,tagline,group,location,event_date,event_time,image,type) VALUES(NULL,NOW(),?,?,?,?,?,?,?,?)");
        $insert_stmt->bind_param("issssssi",$_SESSION['id'],$tagline,$organizer,$location,$event_date,$event_time,$image_name,$food_id);
        $insert_stmt->execute();

userid 是我从存储的 cookie 中提取的整数。

$tagline、$organizer、$location 是最多 140 个字符的文本。

$event_date = $event_date= substr(date('Y'),0,2).$year."-".$month."-".$day; $event_time= date("H:i:s", strtotime($hour.":".$minute.$period)); - 所有这些变量都是用户作为文本输入的两位数字

$image_name 是文本,文件路径

type 是 1-29 的整数。

这是一个示例结果?数据库的值:38、测试、测试、测试、2013-2-20、14:15:00、Halloween_Beer_2.jpg、7

这是 mysql 中名为 food 的表的设置屏幕截图: 在此处输入图像描述

4

1 回答 1

-2
$insert_stmt = $db->prepare("INSERT INTO food (id,timestamp,userid,tagline,group,location,event_date,event_time,image,type) VALUES(NULL,NOW(),?,?,?,?,?,?,?,?)");
        $insert_stmt->bind_param("issssssi",$_SESSION['id'],$tagline,$organizer,$location,$event_date,$event_time,$image_name,$food_id);
        $insert_stmt->execute();

你做错了。BindParam只接受一个值

$query->bindParam("value",":value",PDO::PARAM_INT);// type

你可以做这样的事情

   $insert_stmt = $db->prepare("INSERT INTO food (id,timestamp,userid,tagline,group,location,event_date,event_time,image,type) VALUES(NULL,NOW(),?,?,?,?,?,?,?,?)");

$insert_stmt->execute(array("issssssi",$_SESSION['id'],$tagline,$organizer,$location,$event_date,$event_time,$image_name,$food_id))

或者你可以看看这个 PDO 教程

于 2012-10-20T17:31:50.183 回答