Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我有一个查询,使用数组和for循环将值插入MySQL数据库_Php_Mysql_Database - Fatal编程技术网

Php 我有一个查询,使用数组和for循环将值插入MySQL数据库

Php 我有一个查询,使用数组和for循环将值插入MySQL数据库,php,mysql,database,Php,Mysql,Database,我有一个查询,使用数组和for循环将值插入MySQL数据库。但当我提交表单MySQL数据库时,显示了双条目。第一条记录为空,第二条记录有值?为什么MySQL数据库显示第一条记录为空条目。我不知道这背后的原因是什么 这里是我的功能代码 <?php if(isset($_REQUEST['order'])) { $count=1; $count++; $total=$_POST['total']; for ($i=1; $i<=$count; $i++){ $querypro

我有一个查询,使用数组和for循环将值插入MySQL数据库。但当我提交表单MySQL数据库时,显示了双条目。第一条记录为空,第二条记录有值?为什么MySQL数据库显示第一条记录为空条目。我不知道这背后的原因是什么

这里是我的功能代码

<?php 
if(isset($_REQUEST['order'])) 
{
$count=1;
$count++;   
$total=$_POST['total']; 
for ($i=1; $i<=$count; $i++){
$queryproduct=mysql_query("INSERT INTO shoppingcart VALUES    ('','','','$uid','$email','".$_POST['product'][$i]."','".$_POST['userfile_name'] [$i]."','".$_POST['price'][$i]."','".$_POST['qty'][$i]."','".$_POST['amt'][$i]."','$total')") or die("Order  Query Problem");    
}
}
?>

尝试从0开始循环,因为$\u POST[“pid”]变量从0开始编号,如第二个(工作)示例所示:


对于($i=0;$i我将首先忽略此代码的安全性问题,我们可以稍后再回到这一部分。让我们首先处理我认为正确的问题

第一条记录是空的,第二条记录有值?为什么MySQL数据库显示第一条记录为空条目。我不知道这背后的原因是什么

这是怎么回事?您将
$count
设置为
1
,然后在第二行将其立即增加1
2
。您为什么要这样做?为什么不首先将其设置为2

我敢打赌,第一条记录为空的问题是从这些代码行开始的

$total = $_POST['total'];
这只在查询中使用一次,那么为什么要将它分配给另一个变量呢?这只是在浪费内存

从您的代码的第一个示例中,我想说这将是您可以从中获得的最佳执行(同样,不要谈论安全性)


您的代码易受攻击。请避免使用带日期的
mysql\u*
函数。将它们用于新代码是非常困难的。可以使用更现代的替代方法,并且可以更好地维护。相反,建议使用via。@MattBall mysql\u query不建议使用??为什么要将$count=1设置为1,然后将其增加1?另外,请尝试不插入“”状态ment
插入表(col1,col2,…)值(val1,val2,…)
@Voitcus我需要在不同的页面中使用它们。这就是why@FarhanDharsi正确,
mysql\u query()
不推荐使用。对不起,兄弟,下次我将使用matt ball方法
$count=1;
$count++;
$total = $_POST['total'];
<?php 
if(isset($_REQUEST['order'])) 
{
    for ($i = 1, $count = 0; $i <= $count; ++$i)
    {
        $queryproduct = mysql_query
        (
            "INSERT INTO shoppingcart VALUES
            (
                '',
                '',
                '',
                '$uid',
                '$email',
                '{$_POST['product'][$i]}',
                '{$_POST['userfile_name'][$i]}',
                '{$_POST['price'][$i]}',
                '{$_POST['qty'][$i]}',
                '{$_POST['amt'][$i]}',
                '{$_POST['total']}'
            );"
        )
        or die("Order Query Problem");
    }
}
?>
<?php
    if(isset($_REQUEST['order']))
    {
        for($i = 0, $p = count($_POST['product']); $i < $p; ++$i)
        {
            $queryproduct = mysql_query
            (
                "INSERT INTO shoppingcart VALUES
                (
                    '',
                    '',
                    '{$_POST['pid'][$i]}',
                    '$uid',
                    '$email',
                    '{$_POST['product'][$i]}',
                    '{$_POST['userfile_name'][$i]}',
                    '{$_POST['price'][$i]}',
                    '{$_POST['qty'][$i]}',
                    '{$_POST['amt'][$i]}',
                    '{$_POST['total']}'
                );"
            )
            or die("Order Query Problem");
        }
    }
?>
<?php
    if(isset($_REQUEST['order']))
    {
        $stmt = $dbh->prepare("INSERT INTO shoppingcart VALUES ('', '', ?, ?, ?, ?, ?, ?, ?, ?, ?);");

        $stmt->bindParam(1, $pid);

        $stmt->bindParam(2, $uid);
        $stmt->bindParam(3, $email);

        $stmt->bindParam(4, $product);
        $stmt->bindParam(5, $name);
        $stmt->bindParam(6, $price);
        $stmt->bindParam(7, $qty);
        $stmt->bindParam(8, $amt);

        $stmt->bindParam(9, $total);

        for($i = 0, $p = count($_POST['product']); $i < $p; ++$i)
        {
            $pid = $_POST['pid'][$i]);

            $product = $_POST['product'][$i]);
            $name = $_POST['userfile_name'][$i]);
            $price = $_POST['price'][$i]);
            $qty = $_POST['qty'][$i]);
            $amt = $_POST['amt'][$i]);

            $total = $_POST['total'];
        }

        $stmt->execute();
    }
?>