0

我正在尝试将数组中的 2 个值插入到数据库中。连接没有问题,插入$fullArr$thumbArr插入的字段是长文本,当我尝试插入 1 个数组值时它工作正常($fullArr$thumbArr)。一旦两个数组都在查询中使用,它就会停止工作。

数组中的值是数据 URL。

private function submitPhoto() {

global $database;

$projectid = $_POST['projectid'];
$fullArr = $_POST['fullArr'];
$thumbArr = $_POST['thumbArr'];

$count = 0;

foreach($thumbArr as $key) {

// Insert Thumb

$database->query("INSERT INTO `photo` (photoid, projectid, dataurlfull, dataurlthumb) VALUES('', '" . $projectid . "', '" . $fullArr[$count] . "', '" . $key . "')");

$count++;
}
}
4

2 回答 2

0

尝试更改查询:

$database->query("INSERT INTO `photos` (photoid, projectid, dataurlfull, dataurlthumb) VALUES('', '$projectid', '$fullArr[$count]', '$key')");
于 2013-06-06T23:25:47.300 回答
0

是否有可能您没有在foreach()循环内执行查询,所以最后一个将“覆盖”您之前的任何查询?此外,$count不是必需的,因为您可以使用$key. 尝试类似的东西 -

foreach($thumbArr as $key=>$value) {
   // Insert Thumb  
   $database->query("INSERT INTO `photo` (photoid, projectid, dataurlfull, dataurlthumb) VALUES('', '" . $projectid . "', '" . $fullArr[$key] . "', '" . $thumbArr[$key] . "')");
   $database->execute();
}

请注意,您对 SQL 注入持开放态度,因为您使用的是$_POST未经清理的数据。如果您使用mysqli_or PDO,请使用参数化语句

foreach($thumbArr as $key=>$value) {
   // Insert Thumb  
   $database->query("INSERT INTO `photo` (photoid, projectid, dataurlfull, dataurlthumb) VALUES('', ?, ?, ?)");
   $database->bindParam(1,$projectid);
   $database->bindParam(2,$fullArr[$key]);
   $database->bindParam(3,$thumbArr[$key]);
   $database->execute();
}
于 2013-06-06T23:29:09.213 回答