为了账号安全,请及时绑定邮箱和手机立即绑定

SQL 无法使用 PHP 插入

SQL 无法使用 PHP 插入

PHP
宝慕林4294392 2023-12-15 15:16:09
我有以下代码将数据从表单发送到 SQL 数据库:<?phpsession_start();ob_start();include 'includes/db_connection.php';if(empty($_POST)){    header("Location: index.php");}else{    try {        $dbconn = OpenCon();        $fname = $_POST['fnameInput'];        $sname = $_POST['snameInput'];        $sex = $_POST['sexInput'];        $dob = $_POST['dobInput'];        $schoolID = $_SESSION['school'];        $sqlstmnt2 = 'INSERT INTO students (`firstName`, `surname`, `dob`, `gender`, `schoolID`) VALUES (:firstName, :surname, :dob, :gender, :schoolID)';        $stmtUsr2 = $dbconn -> prepare($sqlstmnt2);        $stmtUsr2 -> bindValue(':firstName', $fname);        $stmtUsr2 -> bindValue(':surname', $sname);        $stmtUsr2 -> bindValue(':dob', $dob);        $stmtUsr2 -> bindValue(':gender', $sex);        $stmtUsr2 -> bindValue(':schoolID', $schoolID);        $stmtUsr2 -> execute();        // redirect to pupil's profile        header("Location: pupilprofile.php");        die();        }     catch (PDOException $e) {        echo "DataBase Error: The user could not be added.<br>".$e->getMessage();    }     catch (Exception $e) {        echo "General Error: The user could not be added.<br>".$e->getMessage();    }}?>我的数据库表的结构为,studentID 为主键自动递增,除 dob 之外的所有字段均为文本(dob 设置为日期时间)发送数据的表单如下所示:<form action="registersubmit.php" method="post">    First Name: <input type="text" autocomplete="off" name="fnameInput"><div id="erfirstname"></div><br>    Surname: <input type="text" autocomplete="off" name="snameInput"><div id="ersurname"></div><br>    Sex:      <select id="sexInput" name="sexInput">        <option value="male">Male</option>        <option value="female">Female</option>    </select><div id="ersex"></div><br>    DOB:    <input type="text" id="datepicker" name="dobInput"><div id="erdob"></p>    <input type="submit" name="pupilRegSubmit" value="Register" onclick="if(validatePupilReg()) this.form.submit()"></form>我没有收到 PDO 错误,但数据没有插入到表中。我认为这可能与日期选择器与 SQL 中的数据类型不匹配有关,但我不确定。有任何想法吗?
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

在 PHP 中获取 MySQL 错误

通过打印$statement->execute()的结果可以知道MySQLi语句是否成功。引用 POD...

返回值

成功时返回 TRUE,失败时返回 FALSE。

如果返回TRUE,则可能存在与语句失败不同的问题。

您还可以从 PHP 的 MySQLi 包中使用 error() 和 errno() 查看 MySQL 语句的结果。您没有在代码中列出它,但您必须以这样的方式定义 $dbconn...

$dbconn = new mysqli($hostname, $username, $password, $database);

使用 $stmtUsr2 -> execute(); 执行后,尝试运行此代码...

print_r($dbconn->error);
print_r($dbconn->errno);

您的具体案例

更改日期选择器的格式以匹配 MySQL 的插入格式。

$(selector).datepicker({ 
       dateFormat: 'yy-mm-dd',
});
查看完整回答
反对 回复 2023-12-15
  • 1 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信