我希望用户能够使用php表单将“bid”插入到MySQL表中 - 这仅用于演示,而不是实时目的。我收到以下错误消息,
错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第3行('30','2011-07-13''附近使用正确的语法(第3行是指我的标签?)我认为它不喜欢表单输入只是作为“文本”类型,但不知道如何解决它 - 所有建议非常欢迎,这是我的形式和& php代码如下;
<form action="insert.php" method="post">
<div><label for="commodity">Commodity</label><input type="text" name="commodity"/></div>
<div><label for="region">Region</label><input type="text" name="region"/></div>
<div><label for="member">Member</label><input type="text" name="member" /></div>
<div><label for="size">Size</label><input type="int" name="size" /></div>
<div><label for="price">Post Bid</label><input type="decimal" name="price" /></div>
<div><label for="posted">Date Posted</label><input type="text" name="posted"/></div>
<P><label for="submit">Submit Bid</label><input type="submit" /></P>
</form>
&安培; PHP
<?php
$con = mysql_connect("localhost","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("palegall_newTrader", $con);
$sql="INSERT INTO `buy` (commodity, region, member, size, price, posted)
VALUES
('$_POST[commodity]','$_POST[region]','$_POST[member]','$_POST[size]','$_POST[price]','$_POST[posted]'";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
非常感谢scotia
答案 0 :(得分:1)
您很容易受到SQL注入攻击,并且您的POST可能包含'
,这会导致语法错误。请尝试以下方法:
$commodity = mysql_real_escape_string($_POST['commodity']);
$region = mysql_real_escape_string($_POST['region']);
etc...
$sql = "INSERT INTO ... VALUES ('$commodity', '$region', etc...)";
转义函数将确保数据中的任何SQL元字符都被转义,因此它们不能“破坏”您的查询。永远不会直接将用户提供的数据插入到SQL查询中,即使它是一个只有您将使用的简单脚本。养成逃避一切的习惯(或者更好,使用PDO准备好的陈述),因为在某些时候,如果你不这样做,你就会被烧掉。
答案 1 :(得分:1)
您的右括号需要在要插入的最后一个值之后,现在它在第4个元素之后。把它放在声明和声明中。
$sql="INSERT INTO `buy` (commodity, region, member, size, price, posted)
VALUES
('$_POST[commodity]','$_POST[region]','$_POST[member]','$_POST[size]','$_POST[price]','$_POST[posted]')"
另外,请遵循@ Marc的建议并对您的意见进行审查。
答案 2 :(得分:1)
不应该是
$sql="INSERT INTO `buy` (commodity, region, member, size, price, posted) VALUES ('$_POST[commodity]','$_POST[region]','$_POST[member]','$_POST[size]','$_POST[price]','$_POST[posted]')";
答案 3 :(得分:1)
在$ _POST ['size']之后有一个错位的括号应该在$ _POST [posted]之后
SQL应如下所示:
$sql="INSERT INTO `buy` (commodity, region, member, size, price, posted)
VALUES
('$_POST[commodity]','$_POST[region]','$_POST[member]','$_POST[size]','$_POST[price]','$_POST[posted]')";