duanjia4097
2014-10-16 11:28
浏览 16
已采纳

在一个数组中有多个值 - For Loop?

The Script:

<?php
        include("connect.php");    
?>    
<form method="POST" action="<?PHP echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="name1" />
    <input type="text" name="name2" />
    <input type="text" name="name3" />
    <input type="submit" name="submit" />
</form>    
<?php
if(isset($_POST['submit'])){    
    $name1 = $_POST['name1'];
    $name2 = $_POST['name2'];
    $name3 = $_POST['name3'];

    $myarray = array($name1, $name2, $name3);   

    for($i = 0; $i < count($myarray); $i++){

        $tqs = "SELECT `id` FROM `images` WHERE `image_file` IN ('" . $myarray[$i] . "')";
        $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc));

        $fetch_array = array();
        $row = mysqli_fetch_array($tqr);
        $fetch_array[] = $row['id'];

        print_r($fetch_array);    
    }    
}    
?>

The script prints:

Array ( [0] => 558 ) Array ( [0] => 559 ) Array ( [0] => 560 ) 

How to have these values inside one array?

E.g.:

Array ( [0] => 558 [1] => 559 [2] => 560 )

The image file names come from the form and the values come from the ID column of the "images" table. And I am looking to have the selected stored inside one array.

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dqs13465424392 2014-10-16 11:31
    已采纳

    The issue is you're destroying the array and recreating it on each iteration. Move that line out of the loop, and don't print the array on each iteration:

    $fetch_array = array(); // only create the array once
    
    for($i = 0; $i < count($myarray); $i++){
        $tqs = "SELECT `id` FROM `images` WHERE `image_file` IN ('" . $myarray[$i] . "')";
        $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc));
    
        $row = mysqli_fetch_array($tqr);
        $fetch_array[] = $row['id'];
    }
    
    print_r($fetch_array); // only output once
    

    Side note: your query is vulnerable to SQL Injection. Switch to a Prepared Statement with bound parameters.

    打赏 评论
  • duanbeng6709 2014-10-16 11:31

    You have to declare your array outside the loop. Otherwise you keep overwriting the array.

    <?php
        include("connect.php");
    ?>
    
    <form method="POST" action="<?PHP echo $_SERVER['PHP_SELF']; ?>">
        <input type="text" name="name1" />
        <input type="text" name="name2" />
        <input type="text" name="name3" />
        <input type="submit" name="submit" />
    </form>
    
    <?php
    
    if(isset($_POST['submit'])){
    
        $name1 = $_POST['name1'];
        $name2 = $_POST['name2'];
        $name3 = $_POST['name3'];
    
        $myarray = array($name1, $name2, $name3);
    
        $fetch_array = array();     // <----------- Declare here
        for($i = 0; $i < count($myarray); $i++){
    
            $tqs = "SELECT `id` FROM `images` WHERE `image_file` IN ('" . $myarray[$i] . "')";
            $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc));
    
            $row = mysqli_fetch_array($tqr);
            $fetch_array[] = $row['id'];
        }
    
        print_r($fetch_array);      // <----------- Print here
    }
    
    ?>
    
    打赏 评论

相关推荐 更多相似问题