这个查询运行时没有任何错误,但它没有向数据库添加任何内容。我找不到它了。你们觉得怎么样?我的数据库连接是在另一个文件中定义的,它可以工作,因为其他查询仍然可以工作。
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
这是一个很好的例子,说明了为什么检查prepare
、execute
、bind_param
等的返回值很重要。
很可能您的查询实际上失败了。正如其他人所指出的,它可能处于bind_param
阶段——您正在绑定的一个参数未初始化。
例如,execute()
向呼叫者返回指示成功或失败的bool
。您可以按以下方式进行检查:
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
更完整的指南:PHP Prepared Statements。