php - 使用 PHP 表单将行插入 MySQL 表

标签 php mysql forms

我希望用户能够使用 php 表单将“出价”插入 MySQL 表中 - 这仅用于演示,而非实时目的。我收到以下错误消息,

错误:您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 3 行的“90”、“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)
?> 

提前致谢,斯科蒂亚

最佳答案

您容易受到 SQL 注入(inject)攻击,并且您的 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 准备好的语句),因为在某些时候,如果你不这样做,你会被烧死。

关于php - 使用 PHP 表单将行插入 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777436/

相关文章:

javascript - codeigniter 中的事件日历未获取超过 1 条内容

php - 当 WHERE 存在时 SQL Server 更新

PHP Implode 返回单个条目

javascript - 单选按钮值未解析

javascript - 表单提交不传递按钮名称

php - fatal error : Class 'AppController' not found error

php - packagist.org 仅适用于库,而不是完整的应用程序吗?

mysql - 在mysql中可以在更新某些行时自动执行某种触发器或函数或过程吗?

javascript - 使用单选按钮将值从 html 表单传递到 javascript 函数

javascript - 防止使用 ENTER 提交表单 jquery 不与警报一起使用