为什么我不写我的数据库

时间:2014-08-16 21:49:23

标签: php mysql database forms

这是我的代码我做错了什么。我有一个表单提交名称和beername信息连接到mydatabase。我测试连接我的连接没有错误。我测试以确保定义了变量。最后我尝试写入我的数据库,但我收到此错误:

  

警告:mysqli :: query()期望参数2为long,给定字符串为
  在/home/zacgre4/zachjgreen.dreamhosters.com/Homebrew/contact.php上
  第15行。

我的代码是:

if(isset($_POST["name"]) && isset($_POST["beername"])){
    $name = $_POST["name"];
    $beername = $_POST["beername"];
    $host="admin.zachjgreen.dreamhosters.com";
    $un="musicchild";
    $pw="xxxxxxxx";
    $dbn="adminzjg";
    $db=new mysqli($host, $un, $pw, $dbn);
    if($db->connect_errno > 0){
        echo "Failed " . mysqli_connect_error();
    }
    echo $name; 
    echo $beername;
    $db->query($con, "INSERT INTO Beers VALUE ($name, $beername)"); //this is line 15
}

2 个答案:

答案 0 :(得分:0)

如果连接没有错误,那么问题在于查询。 您需要指定要插入的列。它应该看起来像

"INSERT INTO Beers (name, beer_name) VALUES ($name, $beername)"

其中namebeer_name是表格中的列

您可以回显查询以查看其外观。然后将其复制到mysql控制台,即:

echo "INSERT INTO Beers VALUE ($name, $beername)"

此外,这个脚本非常不安全,但这超出了你的问题的范围。

答案 1 :(得分:0)

你需要围绕变量引用,但这对于sql注入是不安全的,但也容易出错,你应该准备那个查询:

 if(isset($_POST["name"]) && isset($_POST["beername"])){
    $name = $_POST["name"];
    $beername = $_POST["beername"];

    //connection
    $host="admin.zachjgreen.dreamhosters.com";
    $un="musicchild";
    $pw="xxxxxxxx";
    $dbn="adminzjg";


    $db = new mysqli($host, $un, $pw, $dbn);

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }


    /* create a prepared statement */
    if ($stmt = $db->prepare("INSERT INTO Beers VALUES (?, ?)")) {

        $stmt->bind_param("ss", $name, $beername);
        $stmt->execute();

        printf ("New Record has id %d.\n", $db->insert_id);


        $stmt->close();
    }

    /* close connection */
    $db->close();
}