这个PHP错误是什么?

这个PHP错误是什么?,php,html,mysql,sql,Php,Html,Mysql,Sql,我正试图在数据库中上传带有图片的图片。它总是给我这个错误: Array ( [0] => images (1).jpg [1] => images (1).jpg [2] => images (1).jpg [3] => images (1).jpg ) 注意:第82行C:\xamppv2\htdocs\fabriek\invullen.php中未定义的偏移量:4 致命错误:未捕获异常“PDOException”,

我正试图在数据库中上传带有图片的图片。它总是给我这个错误:

Array ( [0] => images (1).jpg 
        [1] => images (1).jpg 
        [2] => images (1).jpg [3] => 
        images (1).jpg ) 
注意:第82行C:\xamppv2\htdocs\fabriek\invullen.php中未定义的偏移量:4

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY093]:参数编号无效:C:\xamppv2\htdocs\fabriek\invullen.php:82堆栈跟踪:#0 C:\xamppv2\htdocs\fabriek\invullen.php(82):PDOStatement->execute(Array)#1{main}在第82行的C:\xamppv2\htdocs\fabriek\invullen.php中抛出

因此,我们的想法是创建一个网站,管理员可以上传产品。现在唯一不起作用的是将多表图片上传到数据库中。我在互联网上搜索过这个错误,但是所有的错误都有很多不同的代码,而且他们大多谈论“放错了”。有人知道这是否可能是问题所在吗

希望有人能帮忙

托马斯

守则:

$db_server = "localhost";
$db_username = "root";
$db_password = "";
$db_database = "meubelfabriek";
$conn = new PDO("mysql:host=$db_server;dbname=$db_database", $db_username, $db_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (isset($_POST['submit']))
{
    $tipe_file1 = $_FILES['image1']['type'];
    $tipe_file2 = $_FILES['image2']['type'];
    $tipe_file3 = $_FILES['image3']['type'];
    $tipe_file4 = $_FILES['image4']['type'];
    $prijs = $_POST['prijs'];
    $naam = $_POST['fname'];
    $beschrijving = $_POST['desc'];
    $maat1 = $_POST['maat1'];
    $maat2 = $_POST['maat2'];
    $maat3 = $_POST['maat3'];
    $maat4 = $_POST['maat4'];
    if ($tipe_file1 == "image/jpeg" || $tipe_file1 == "image/jpg"){
        $aMyUploads = array();
        foreach ($_FILES as $aFile) {
            if(0 === $aFile['error']){
                $newLocation = ''.$aFile['name'];
                if(0 === $aFile['error'] && (false !== move_uploaded_file($aFile['tmp_name'], $newLocation))){
                    $aMyUploads[] = $newLocation;
                } else {
                    $aMyUploads[] = '';
                }
            }
        }

        print_r($aMyUploads);
        $stmt = $conn->prepare("INSERT INTO `producten` (naam, beschrijving, prijs, maat1, maat2, maat3, maat4, image1, image2, image3, image4) VALUES
    (:naam, :beschrijving, :prijs,  :maat1, :maat2, :maat3, :maat4,'".$aMyUploads[0]."','".$aMyUploads[1]."','".$aMyUploads[2]."','".$aMyUploads[3]."',)");
        $stmt->execute(array(":naam"=>$naam, ":beschrijving"=>$beschrijving, ":prijs"=>$prijs, ":maat1"=>$maat1, ":maat2"=>$maat2, ":maat3"=>$maat3, ":maat4"=>$maat4,":image1"=>$aMyUploads[1], ":image2"=>$aMyUploads[2], ":image3"=>$aMyUploads[3], ":image4"=>$aMyUploads[4]));
    }else{
        echo "<script>alert('Failed to add data! Images must be inputed at last one and filetype JPG/JPEG')</script>
            <script>setTimeout(\"self.history.back();\",0000);</script>";
    }
}
$db\u server=“localhost”;
$db_username=“root”;
$db_password=“”;
$db_database=“meubelfabriek”;
$conn=newpdo(“mysql:host=$db_server;dbname=$db_database”、$db_username、$db_password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
如果(isset($_POST['submit']))
{
$tipe_file1=$_FILES['image1']['type'];
$tipe_file2=$_FILES['image2']['type'];
$tipe_file3=$_FILES['image3']['type'];
$tipe_file4=$_FILES['image4']['type'];
$prijs=$_POST['prijs'];
$naam=$_POST['fname'];
$beschrijving=$_POST['desc'];
$maat1=$_POST['maat1'];
$maat2=$_POST['maat2'];
$maat3=$_POST['maat3'];
$maat4=$_POST['maat4'];
如果($tipe_file1==“image/jpeg”| |$tipe_file1==“image/jpg”){
$aMyUploads=array();
foreach($\文件为$aFile){
如果(0==$aFile['error']){
$newLocation='.$aFile['name'];
如果(0==$aFile['error']&&(false!==move\u上传的文件($aFile['tmp\u name'],$newLocation))){
$aMyUploads[]=$newLocation;
}否则{
$aMyUploads[]='';
}
}
}
打印(上传);
$stmt=$conn->prepare(“插入到'producten'(naam、beschrijving、prijs、maat1、maat2、maat3、maat4、image1、image2、image3、image4)值中
(:naam,:beschrijving,:prijs,:maat1,:maat2,:maat3,:maat4,“$aMyUploads[0]。”,“$aMyUploads[1]。”,“$aMyUploads[2]。”,“$aMyUploads[3]。”,”);
$stmt->execute(数组(“:naam”=>$naam,”:beschrijving“=>$beschrijving,”:prijs“=>$prijs,”:maat1”=>$maat1,“:maat2”=>$maat2,”:maat3”=>$maat3,“:maat4”=>$maat4,”:image1“=>$aMyUploads[1],“:image2”=>$aMyUploads[2],“:image3”=>aMyUploads[4]);
}否则{
echo“警报('添加数据失败!必须在最后一个输入图像,文件类型为JPG/JPEG')
setTimeout(\“self.history.back();\”,0000);”;
}
}

您可以通过字符串concatations添加一些列,但将值绑定为参数。那是行不通的。因此,对所有列使用参数:

  $stmt = $conn->prepare("INSERT INTO `producten` (naam, beschrijving, prijs, maat1, maat2, maat3, maat4, image1, image2, image3, image4) VALUES
(:naam, :beschrijving, :prijs,  :maat1, :maat2, :maat3, :maat4,:image1,: image2, :image3, :image4)");
    $stmt->execute(array(":naam"=>$naam, ":beschrijving"=>$beschrijving, ":prijs"=>$prijs, ":maat1"=>$maat1, ":maat2"=>$maat2, ":maat3"=>$maat3, ":maat4"=>$maat4,":image1"=>$aMyUploads[1], ":image2"=>$aMyUploads[2], ":image3"=>$aMyUploads[3], ":image4"=>$aMyUploads[4]));

如果他们尝试的话,这个错误再好不过了。如果将准备好的语句和字符串合并,则错误消息应该是可读的。这不是一个好主意,请检查您的$stmt。如果以格式化的方式重写查询语句,并且仅对值使用单引号,则查询中会出现错误。你能告诉我你为什么用冒号吗??