【问题标题】:Fatal error: Call to a member function execute() on a non-object致命错误:在非对象上调用成员函数 execute()
【发布时间】:2014-07-23 20:55:18
【问题描述】:
$sql = "UPDATE Student ".
           "SET score = $total_score ".
           "WHERE student_id = $student_id";
    $stmt = $mysqli->prepare($sql);
    $stmt->execute();
    $query = "SELECT faculty_id ".
             "From Student s ".
             "WHERE student_id =$student_id";
    $state =$mysqli->prepare($query);
    $state->execute();
    $state->bind_result($faculty_id);
    if ($state->fetch())
    {if (strpos($faculty_id, '1') > 0) {
            include ('./Registration_Step_3_Student.php');
        } else 
        {
            include ('./Registration_Step_3_Mentor.php');
        }   
    }

因此,每当我尝试运行名为 $state 的第二个查询时,我都会收到此错误,指出它无法执行。我对 SQL 和 PHP 比较陌生,所以任何帮助都将不胜感激。谢谢!

【问题讨论】:

  • 将错误报告添加到文件顶部error_reporting(E_ALL); ini_set('display_errors', 1); 看看它是否会产生任何结果。
  • 可能是From Student s 中的s - 您可能按下了CTRL-S 进行保存,但输入s 失败了。我以前也遇到过。
  • 似乎仍然在网站上产生相同的输出
  • 这个"From Student s ".不应该是"From Student ".Students吗? Students 之间有一个空格,这似乎是最有可能的错误。
  • 不,我认为这不是问题所在,例如,我在允许代码中也遇到了同样的错误:$query = "UPDATE Student"。 "SET student_password = '" 。 $学生密码。 "', phone_number = '" 。 $电话号码。 "', 位置 = '" 。 $位置。 “',skype_address ='”。 $skype_address 。 “'”。 “在哪里 student_id ='”。 $student_id ."''" ; $state =$mysqli->prepare($query); $状态->执行();包括 ('./Registration_Step_2.php');

标签: php sql execute


【解决方案1】:

由于您使用mysqli,您应该学习如何正确绑定,请阅读bind_Param

mysqli_stmt::prepare 失败时返回 false,当它失败时你不应该执行该语句:

$sql = "UPDATE Student SET score = ? WHERE student_id = ?";
$stmt = $mysqli->prepare($sql);
if($stmt){
    $stmt->bind_param('si', $total_score, $student_id);
    if($stmt->execute()){
        $query = "SELECT faculty_id From `Student s` WHERE student_id = ?";
        $state =$mysqli->prepare($query);
        $stmt->bind_param('i', $student_id);
        if($state->execute()){
            var_dump($state->fetch());
        }else{
            echo 'SELECT failed';
             printf("Error: %s.\n", $state->error);
        }       
    }else{
       echo 'failed to execute UPDATE';
    }
}else{
      echo 'failed to prepare() UPDATE \n';
       printf("Error: %s.\n", $stmt->error);

}

希望对你有帮助

【讨论】:

  • 哦,请仔细检查您的语法,SELECT faculty_id From Student s WHERE student_id = ? 看起来不正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 2013-11-25
  • 2012-05-30
  • 2016-08-30
  • 2015-02-06
相关资源
最近更新 更多