PHP无法将数据输入数据库表

时间:2015-04-07 15:58:42

标签: php mysql

我正在尝试输入我从两个变量stuname获得的数据,并在表格的用户名和书籍列中预订!我只想将数据输入这两列,因为id列是自动增量,日期是自动更新的时间戳!!!每次运行我的代码时,我都会将数据输入到两个文本字段中,当我按下提交时,我会收到此消息!!

Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\assignment.php on line 35

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\assignment.php on line 36

这是我的代码:

<?php

$servername = "localhost";
$Username = "root";
$Password = "admin";
$Dbname = "nfc";
$conn = mysqli_connect($servername, $Username, $Password, $Dbname);
if (mysqli_connect_errno())
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
echo "Connected successfully";
if(isset($_POST["stuname"])&&($_POST["book"]))
{
$stuname =  $_POST["stuname"];
$book =$_POST["bookname"]; 
$sql = "INSERT INTO library (id, username, book, date)
VALUES ('', '$stuname', '$book','')";

       mysqli_select_db($conn, 'nfc') or die(mysqli_error($con));
       $retval = mysqli_query( $sql, $conn );
       if(! $retval )
        {
            die('Could not enter data: ' . mysql_error());
        }


        else 
        {
            echo "Success";
        }

        echo " to stuname ". $stuname;
        echo " to book ". $book;
}
?>
<form id="form1" name="form1" method="post" action="#">
  <p>
    <label for="1">student name</label>
    <input type="text" name="stuname" id="1"  />
  </p>
  <p>
    <label for="12">book name</label>
    <input type="text" name="bookname" id="12" />
  </p>
  <input name="submit" type="submit" value="Submit" />

</form>

2 个答案:

答案 0 :(得分:1)

mysqli_query 中,您应首先输入conn然后再将查询本身放入

$retval = mysqli_query( $conn, $sql );

答案 1 :(得分:1)

@Ghost在评论中解决了第一个问题。

现在解决其他问题:

<强> 1。您的数据库设计有问题

这应该立即失败,因为你要为id插入一个空值。 id应该是主键,因此应该是唯一的。如果插入空值,则自动增量不起作用。

<强> 2。您的插入声明有问题

您应该在INSERT语句中排除自动增量列,并且不应对date使用空值。如果date是时间戳,则应该使用NULL(如果时间应该为空)或使用NOW()来使用当前时间戳。

第3。根据您的意见,您不应该在此页面上使用插入。

如果您尝试更新现有行,则应该使用UPDATE或REPLACE而不是INSERT,但是您应该使用主键来表示要替换的行。现在,看起来你没有主键,所以请参阅我的第一点。

<强> 4。安全问题:您的查询受SQL注入。

您在查询中直接使用用户输入($ _POST)。任何恶意用户都可以利用此功能并提取,删除或操作数据库中的数据。您应该使用预准备语句,或者至少使用转义函数。