Php PDO如何进行此查询?
$get data from csv函数的值是多少,因此我们无法知道它有多少。Php PDO如何进行此查询?,php,sql,pdo,phpmyadmin,Php,Sql,Pdo,Phpmyadmin,$get data from csv函数的值是多少,因此我们无法知道它有多少。 我自己尝试,PDO不能做这个查询。我应该做什么查询 一个占位符无法完成此操作。仅在允许使用普通表达式的情况下才允许使用占位符,并且值列表不是单个表达式 因此,您需要使用字符串插值/串联,如Gautam3164的答案所示,或者使用一个循环,每次插入一行,例如 $what = "(999,'string','string2'),(21,'aaaa','bbbbb'),(22,'ccccc','ddddd')"; incl
我自己尝试,PDO不能做这个查询。我应该做什么查询 一个占位符无法完成此操作。仅在允许使用普通表达式的情况下才允许使用占位符,并且值列表不是单个表达式 因此,您需要使用字符串插值/串联,如Gautam3164的答案所示,或者使用一个循环,每次插入一行,例如
$what = "(999,'string','string2'),(21,'aaaa','bbbbb'),(22,'ccccc','ddddd')";
include("../connect/pdoconnect.php");
try {
$sql = $db->prepare("INSERT INTO `bd_fortest` (`user_ID`, `picturename`, `picturepath`) VALUE :what");
$sql->execute(array(":what"=>$what));
}
catch(PDOException $e) {
echo "\nPDO::errorInfo():\n";
print_r($db->errorInfo());
}
如果使用字符串连接,则会失去参数化语句的保护。您需要确保所有字符串都经过适当的消毒或转义。占位符用于插入值,因此可以将它们与代码正确分开。如果您使用它们插入代码,PDO将不会将其作为代码处理,因为这正是它应该做的。如果您从某个数组生成$what,那么PDO准备的语句应该是该数组循环的目标。错误已修复。谢谢大家:)谢谢大家。我将尝试:)@Batmar+1为您提供…很好的Anshmm我尝试了,它显示了致命错误:对非对象调用成员函数prepare()。这意味着您没有正确设置
$db
,这是一个完全不同的问题。
$whats = array(array('userid' => 999, 'picturename' => 'string', 'picturepath' => 'string2'),
array('userid' => 21, 'picturename' => 'aaaa', 'picturepath' => 'bbbbb'),
array('userid' => 22, 'picturename' => 'ccccc', 'picturepath' => 'ddddd')
);
$sql = $db->prepare("INSERT INTO `bd_fortest` (`user_ID`, `picturename`, `picturepath`) VALUES (:userid, :picturename, :picturepath)");
foreach ($whats as $what) {
$sql->execute($what);
}