php-插入sql错误

时间:2015-01-12 08:30:49

标签: php mysql wampserver

<?php
$database="jayesh"; //database name
$first=$_POST['first'];//this values comes from html file after submitting
$last=$_POST['last'];
$con = mysqli_connect("localhost","root" ,"");//for wamp 3rd feild is balnk
if (!$con)
{
die('Could not connect: ' . mysqli_connect_error());
}
mysqli_select_db("$database", $con);

$query = "INSERT INTO info (first,last)VALUES ('$first','$last')";
mysqli_query($query);

echo "<script type='text/javascript'>\n";
echo "alert('you are Succesflly registered');\n";
echo "</script>";


mysqli_close();
?> 

这是我的代码。我遇到了以下错误。 Plz的帮助。日Thnx

警告:mysqli_select_db()期望参数1为mysqli,第10行的C:\ wamp \ www \ New folder \ insert.php中给出的字符串

警告:mysqli_query()需要至少2个参数,1在第13行的C:\ wamp \ www \ New folder \ insert.php中给出

警告:mysqli_close()预计在第20行的C:\ wamp \ www \ New folder \ insert.php中给出1个参数,0

3 个答案:

答案 0 :(得分:3)

它需要4个参数 第一个是主机,第二个用户,第三个密码和第四个数据库名称 mysqli_connect(“localhost”,“root”,“”,$ database);

答案 1 :(得分:1)

更改 -

$con = mysqli_connect("localhost","root" ,"", $database);

和 -

mysqli_query($con, $query);

答案 2 :(得分:0)

问题是mysqli_connect采用所有4个连接参数,格式为;

mysqli_connect("myhost", "myuser", "mypassw", "mybd");

我已在下面的代码中对此进行了更正。

<?php
// Set Database name;
$database = "jayesh";           

$con      = mysqli_connect("localhost", "root", "", $database);
if (!$con) {
    die('Could not connect: ' . mysqli_connect_error());
}

$first    = isset($_POST['first']) && strlen($_POST['first']) ? mysqli_real_escape_string($con, $_POST['first']) : '' ;
$last     = isset($_POST['last'])  && strlen($_POST['last'])  ? mysqli_real_escape_string($con, $_POST['last'])  : '' ;

$query = "INSERT INTO `info` (`first`, `last`) VALUES ('$first', '$last')";
mysqli_query($con, $query);

echo "<script type='text/javascript'>\n";
echo "alert('you are Succesflly registered');\n";
echo "</script>";

mysqli_close($con);

我在代码中也改变了一些注释;

变量不安全。直接将用户数据输入查询是不好的做法。它可能是恶意的。

要解决这个问题,我只是检查发布的变量是否已设置并且是否包含数据(strlen)。之后,你通过mysqli_real_escape_string抛出它来逃避它并使其安全插入数据库;

注意:由于mysqli_real_escape_string()要求第一个参数是数据库连接,因此必须将其移过数据库连接;

mysqli_close()需要要关闭的数据库连接参数。

这只需要在其中放置$ con,因此它知道要关闭哪个连接。在复杂的系统中,有多个数据库正在运行中,错过连接可能会导致某个地方出现问题

注意:第一个参数的要求也扩展到mysqli_query()函数,该函数在上面的代码中也已更改。