连接成功了,但为什么怎不能插入数据?php正确插入数据的姿势是什么?



<?php
   $sql="INSERT INTO answer_table (userName,questionOrder,questionAnswer)VALUES(?,?,?)";
   $loginName=$_GET['testUser'];
   $questionOrder=$_GET['questionOrder'];
   $questionAnswer=$_GET['answer'];
   $stmt=$conn->prepare($sql);
   $stmt->bind_param('sss',$loginName,$questionOrder,$questionAnswer);
   if($stmt->execute()){
       echo '成功录入';
   }else{
       echo 'please insert again';
   }
   $conn->close();
   ?>

使用预处理prepare,必须要先写bind_param(),在定义里面的变量才行。
如有帮助,望点击我回答右上角【采纳】支持一下。

<?php
   $sql="INSERT INTO answer_table (userName,questionOrder,questionAnswer)VALUES(?,?,?)";
   $stmt=$conn->prepare($sql);
   $stmt->bind_param('sss',$loginName,$questionOrder,$questionAnswer);
   $loginName=$_GET['testUser'];
   $questionOrder=$_GET['questionOrder'];
   $questionAnswer=$_GET['answer'];
   if($stmt->execute()){
       echo '成功录入';
   }else{
       echo 'please insert again';
   }
   $conn->close();
   ?>

最简单的办法,var_dump 打印你的链接数据库,打印你的sql,吧sql放到数据库去执行 ,逐个去打印,看是哪里报错

你打印一下,你的这些参数有没有值。

这些页面上的值是从另一个页面的表单提交上来的,我都可以获取到的。前面的代码都没问题,就是向数据库插入数据就失败了

还是不行,我已经尝试了差不多5种录入方式。php号称最好的语言,应该没有这么复杂吧?是不是新建立的数据表的权限问题?

用tp5或者tp6框架操作,别整那个原生的 ,没用。
安装tp6 : composer create-project topthink/think tp 6.0.*-dev

谢谢,不过框架的学习成本更高,我只是一个医生,主要是想写点在线自动计算月子餐这样不需要太多功能的手机网站,或者小程序。框架的体量太大。但为什么数据库查询一点问题都没有,可是插入就不行?

query('set names utf8;'); $sql="INSERT INTO answer_table (userName,questionOrder,questionAnswer)VALUES('$loginName','$questionOrder','$questionAnswer')"; if($result = $conn->query($sql)){ echo '成功录入'; }else{ echo 'please insert again'; } $conn->close(); ?>

用这个方式解决了,可能与mysql8.0有关,要设定下utf编码

<?php
$loginName=$_GET['testUser'];
$questionOrder=$_GET['questionOrder'];
$questionAnswer=$_GET['answer'];
$conn->query('set names utf8;');
$sql="INSERT INTO answer_table (userName,questionOrder,questionAnswer)VALUES('$loginName','$questionOrder','$questionAnswer')";
if($result = $conn->query($sql)){
    echo '成功录入';
}else{
    echo 'please insert again';
}
$conn->close();
?>