所以我在将数据插入数据库时遇到问题。我当前的错误是“没有选择数据库”错误,但我无法看到问题所在。我的代码是:
<?php
$con=mysqli_connect("localhost","root","","db_test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$firstname=$_POST['firstnameReg'];
$surname=$_POST['surnameReg'];
$mypassword=$_POST['passwordReg'];
$email=$_POST['emailReg'];
$result= mysql_query("INSERT INTO tbl_customers (firstname, lastname, email, password) VALUES ('$firstname', '$surname', '$email', '$mypassword'");
echo "$firstname", "$surname", "$mypassword", "$email";
if($result)
{
echo "Success!";
}
else
{
die(mysql_error());
}
mysqli_close($con);
?>
你能看到任何错误吗?我知道它不受SQL注入的保护,它只是一个测试项目。谢谢。
答案 0 :(得分:2)
您在代码中同时使用mysqli
和mysql
。您可以而且应该只使用mysqli
。
答案 1 :(得分:2)
而不是来自错误库的mysql_query
,您应该使用 mysqli_query
$result= mysql_query("INSERT INTO tbl_customers (firstname, lastname, email, password) VALUES ('$firstname', '$surname', '$email', '$mypassword'");
所以在你的情况下,你也错过了VALUES
:
$result = mysqli_query($con, "INSERT INTO tbl_customers (firstname, lastname, email, password) VALUES ('$firstname', '$surname', '$email', '$mypassword')");
借此机会,您还应该实现预准备语句以避免SQL注入:
$sql = "INSERT INTO tbl_customers (firstname, lastname, email, password) VALUES (?, ?, ?, ?)";
if (!$insert = $con->prepare($sql))
die('Query failed: (' . $con->errno . ') ' . $con->error);
if (!$insert->bind_param('ssss', $firstname, $surname, $email, $mypassword))
die('Binding parameters failed: (' . $insert->errno . ') ' . $insert->error);
if (!$insert->execute())
die('Execute failed: (' . $insert->errno . ') ' . $insert->error);
else
echo "Success!";
mysqli_close($con);
答案 2 :(得分:0)
转到php.net,找到要在mysql_
中使用的每个mysqli_
语法。
您看到的每个警告,即mysql_
语法已弃用,都会显示将要使用的函数。
例如:mysqli_connect()
替换mysql_connect();
和mysql_select_db();
(在一个函数中请求服务器和数据库)。
不要担心编辑,几乎所有重要的功能都(几乎)相同,所以你不必编辑那么多。