2

所以我无法将数据插入我的数据库。我当前的错误是“未选择数据库”错误,但我看不出问题出在哪里。我的代码是:

<?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 注入保护,它只是一个测试项目。谢谢你。

4

3 回答 3

2

您在代码中同时使用mysqlimysql。您可以而且应该只使用mysqli.

于 2013-08-12T00:38:21.263 回答
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);
于 2013-08-12T00:45:02.477 回答
0

转到 php.net 并找到mysql_您要在mysqli_.

您看到的每个警告,即mysql_语法已被弃用,都显示了将要使用的函数。

例如:mysqli_connect()同时替换mysql_connect();mysql_select_db();(在一个函数中请求服务器和数据库)。

不用担心编辑,几乎所有重要功能都(几乎)相同,因此您不必编辑那么多。

于 2013-08-12T00:48:14.310 回答