这是我的代码我做错了什么。我有一个表单提交名称和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
}
答案 0 :(得分:0)
如果连接没有错误,那么问题在于查询。 您需要指定要插入的列。它应该看起来像
"INSERT INTO Beers (name, beer_name) VALUES ($name, $beername)"
其中name
和beer_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();
}