Query子限制但赢得';t添加到我的数据库中


The Query subbmits but won't add to my database

这个查询运行时没有任何错误,但它没有向数据库添加任何内容。我找不到它了。你们觉得怎么样?我的数据库连接是在另一个文件中定义的,它可以工作,因为其他查询仍然可以工作。

  function processs_form(){
            $clean_fullname = sanitize($_POST['fullname']);
            $clean_sport = sanitize($_POST['sport']);
            $clean_package = sanitize($_POST['package']);
            $clean_weight = sanitize($_POST['weight']);
            $clean_height = sanitize($_POST['height']);
            $clean_gpa = sanitize($_POST['GPA']);
            $clean_number = sanitize($_POST['number']);
            $clean_school = sanitize($_POST['school']);
            $clean_gradYear = sanitize($_POST['gradYear']);
            $clean_yearRecorded = sanitize($_POST['yearRecorded']);
            $clean_postion = sanitize($_POST['position']);
            $clean_info = sanitize($_POST['additioninfo']);
            $reply_value = 1;
            GLOBAL $mysqli;
            $stmt = $mysqli->prepare("INSERT INTO video_tickets (`ticket_id`, `user_name`, `new_reply`, `full_name`, `sport`,
                    `position`, `year_recorded`, `grad_year`, `school`, `player_number`, `gpa`, `height`, `weight`,
                    `package`, `addition_info`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
            $stmt->bind_param('isisssiisidddss', $loggedInUser->user_id, $loggedInUser->username, $reply_value,
                    $clean_fullname, $clean_sport , $clean_postion, 
                    $clean_yearRecorded, $grad_year, $clean_school, $clean_number, $clean_gpa, 
                    $clean_height, $clean_weight, $clean_package, $clean_info);
                $stmt->execute();
                $stmt->close();

            $message = <<<_HTML_
            Your Ticket Has Been submited You'll get a Reply within 24 Hours.

_HTML_;
            print nl2br(htmlentities($message));


}

您的绑定有$grad_year,但您使用$clean_gradYear作为中的变量

$clean_gradYear = sanitize($_POST['gradYear']);

将bind_param值中的$grad_year更改为$clean_gradYear

如果其中一个失败,则整个查询将失败。


错误报告会发出错误信号:

  • http://php.net/mysqli_error

这是一个很好的例子,说明了为什么检查prepareexecutebind_param等的返回值很重要。

很可能您的查询实际上失败了。正如其他人所指出的,它可能处于bind_param阶段——您正在绑定的一个参数未初始化。

例如,execute()向呼叫者返回指示成功或失败的bool。您可以按以下方式进行检查:

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;

更完整的指南:PHP Prepared Statements。