这是我的代码,我做错了什么。我有一个表单,提交名称和啤酒名称信息连接到我的数据库。我测试我的连接没有错误。我测试以确保vars是定义的。最后,我尝试写到我的数据库,但是我得到了以下错误:
警告: mysqli::query()期望参数2是长的,字符串给定 在/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
}发布于 2014-08-16 22:27:41
您需要变量周围的引号,但这对于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();
}发布于 2014-08-16 21:54:25
如果它连接没有错误,那么问题在于查询。您需要指定要插入哪些列。它应该看起来像
"INSERT INTO Beers (name, beer_name) VALUES ($name, $beername)"其中name和beer_name是表中的列
您可以回显查询以查看它的外观。然后将其复制到mysql控制台,即:
echo "INSERT INTO Beers VALUE ($name, $beername)"而且,这个脚本非常不安全,但这不在您的问题范围之内。
https://stackoverflow.com/questions/25344330
复制相似问题