我試圖插入一些數據到使用mysqli函數的表中。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
的響應,但我在我的聲明中看不到任何語法錯誤。
添加這只是你上面的'$ CON = ...'行'中connectDN()'〜'mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);'。這使* mysqli *函數在遇到任何錯誤時會拋出異常。您可能還需要在'php.ini'文件中設置'display_errors = On'和'error_reporting = E_ALL',然後重新啓動您的web服務器 – Phil 2014-10-09 21:23:41
另外,閱讀本文,瞭解如何使用* mysqli *中的預準備語句。這將幫助你保護來自SQL注入漏洞的查詢〜http://php.net/manual/mysqli.quickstart.prepared-statements.php – Phil 2014-10-09 21:25:18