首先
因此,切勿在查询中$_POST
包含值。使用PDO或MySQLi参数化或准备它们。(此外,该语法对于包含在字符串中是无效的,因此您正在尝试将文字字符串添加到字段中)'$_POST[var]'
INT
您真正的问题是您没有使用 MySQL,因为它应该使用(一个RDBMS。请参阅下一节:
关系
查找外键。它们将您的表格链接在一起,因此您永远不应该在每次更新时将表格的内容插入另一个表格。您应该在用户表中插入行的 ID 来执行此操作,然后使用JOIN
.
实际插入
要一次插入多个值,请使用以下语法:
INSERT INTO
`table` (`col1`, `col2`) VALUES
(:val1, :val2), (:val3, :val4)
并创建这个数组:
Array(
":val1" => $val1,
":val2" => $val2, // etc.
);
这是使用PDO。查找它,学会爱它,等等。 StackOverflow 上有很多资源,包括示例和偶尔出现的陷阱。
入门
$params = array(
":ampaid" => $_POST["ampaid"], // tip: use quotes for array keys...
":rcamo" => $_POST["rcamo"],
":userchar" => $_POST["userchar"],
":totamo" => $_POST["totamo"]
);
$db = new PDO($connection_info, $user, $pass); // from a config file
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // throw errors
$sql = "INSERT INTO `payment` (`ampaid`, `rcamo`, `userchar`, `totamo`) " .
"VALUES (:ampaid, :rcamo, :userchar, :totamo)";
$prepare = $db->prepare($sql); // prepare query
$prepare->execute($params); // execute query using bound parameters
我会把错误处理留给你作为家庭作业。(提示try-catch
:)
您不能使用查询结果在同一个调用SELECT
中填充INSERT
查询(如果我错了,请纠正我,但这仍然是一个糟糕的主意)。
最后
切勿插入未经处理或未经准备的用户输入。如果这是一个真正的银行应用程序(我有点怀疑......希望如此),我会非常害怕相信我的钱。事实上,我更愿意通过不可避免的诉讼来赚钱,所以要小心并绝对清理你收到的任何用户输入,期间。