【发布时间】:2014-12-04 22:47:49
【问题描述】:
我正在尝试使用 mysqli 函数将一些数据插入到表中。
我的连接使用以下方法可以正常工作:
function connectDB(){
// configuration
$dbuser = "root";
$dbpass = "";
// Create connection
$con=mysqli_connect("localhost",$dbuser,$dbpass,"my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
return false;
}else{
echo '<br />successfully connected<br />';
return $con;
}
}
但是当我尝试运行我的插入函数时,我在数据库中什么也没有。
function newUserInsertDB($name,$email,$password){
$con = connectDB();
// Prepare password
$password = hashEncrypt($password);
echo $password . "<br />";
// Perform queries
mysqli_query($con,"SELECT * FROM users");
mysqli_query($con,"INSERT INTO users (name,email,password,isActivated) VALUES ($name,$email,$password,0)");
// insert
mysqli_close($con);
}
我一直在查看 mysqli 函数列表以寻找给出错误的正确方法,但它们似乎都是关于与数据库的连接,而不是关于插入的成功(我可以在我的数据库中清楚地看到它没有插入。)
最好的调试方法是什么?我应该为我的插入使用哪种错误处理?
我尝试过使用 mysqli_sqlstate,它给出了42000 的响应,但我在我的语句中看不到任何语法错误。
【问题讨论】:
-
在
connectDN()~mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);中的$con = ...行上方添加此内容。这使得 mysqli 函数在遇到任何错误时抛出异常。您可能还需要在您的php.ini文件中设置display_errors = On和error_reporting = E_ALL,然后重新启动您的网络服务器 -
另外,阅读这篇关于在 mysqli 中使用准备好的语句的文章。这将帮助您保护您的查询免受 SQL 注入漏洞的影响 ~ php.net/manual/mysqli.quickstart.prepared-statements.php