需要简化PDO MySQL循环中的插入
因此,我有这段代码(如下),我想将重复行的堆栈简化为一个简单的循环,给定并输入(比如9)URL和LISTNUM的值。这可能真的很简单,但出于某种原因,我无法让我的大脑绕过它——因为我不知道如何处理其他变量中的变量。。。像$\u POST[$n]需要简化PDO MySQL循环中的插入,mysql,loops,pdo,insert,Mysql,Loops,Pdo,Insert,因此,我有这段代码(如下),我想将重复行的堆栈简化为一个简单的循环,给定并输入(比如9)URL和LISTNUM的值。这可能真的很简单,但出于某种原因,我无法让我的大脑绕过它——因为我不知道如何处理其他变量中的变量。。。像$\u POST[$n] if ($_POST[subby] == "subby" ) { try { $dbh = new PDO('mysql:host=db2asdfasdf.net;dbname=adsfasdf04', $user, $
if ($_POST[subby] == "subby" )
{
try {
$dbh = new PDO('mysql:host=db2asdfasdf.net;dbname=adsfasdf04', $user, $pass);
echo "Connected\n";
}
catch (Exception $e) {
die("Unable to connect: " . $e->getMessage());
}
try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video1], 1)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video2], 2)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video3], 3)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video4], 4)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video5], 5)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video6], 6)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video7], 7)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video8], 8)");
$dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video9], 9)");
$dbh->commit();
}
catch (Exception $e) {
$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
}
else
{}
您可以执行如下插入操作:
insert into vim_playlist4 (url, listnum) values
($_POST[video1], 1),
($_POST[video2], 2),
($_POST[video3], 3),
($_POST[video4], 4)
不要忘记在插入数据之前对其进行清理,因为您当前有很多SQL注入易受影响的区域
以下是如何清理数据:
<?php
$dbh->beginTransaction();
$sql = $dbh->prepare("insert into vim_playlist4 (url, listnum) values
(?, 1), (?, 2), (?, 3), (?, 4), (?, 5), (?, 6), (?, 7), (?, 8), (?, 9)");
$sql->execute(array($_POST["video1"], $_POST["video2"], $_POST["video3"],
$_POST["video4"], $_POST["video5"] ,$_POST["video6"], $_POST["video7"],
$_POST["video8"], $_POST["video9"]));
$dbh->commit();
非常感谢!我不太明白消毒的建议。我从MySQL查询切换到PDO系统,因为人们告诉我我很容易受到攻击,PDO就是解决方案。那么这怎么还不安全呢?我更新了php部分。它显示了清理数据的方法之一。