2014-10-16 3 views
0

스크립트 :하나의 배열 안에 여러 개의 값이있는 경우 - For 루프?

<?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);  
    }  
}  
?> 

스크립트 인쇄 :

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

어떻게 하나 배열 내부에이 값을 가지고?

예컨대 :

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

화상 파일명 형태에서 온 값은 "화상"테이블의 ID 컬럼으로부터 온다. 그리고 내가 선택한 내부에 하나의 배열을 찾고 있습니다.

+0

array_puch()를 살펴보십시오. http://php.net/manual/en/function.array-push.php – andrew

답변

0

문제는 배열을 파괴하고 반복 할 때마다 다시 생성한다는 것입니다. 루프에서 그 라인을 이동하고 각 반복에서 배열을 인쇄하지 않습니다

$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 

사이드 참고 : 쿼리가 SQL 인젝션에 취약합니다. 바인드 된 매개 변수로 Prepared Statement로 전환하십시오.

0

루프 밖에서 배열을 선언해야합니다. 그렇지 않으면 배열을 계속 덮어 씁니다.

<?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 
} 

?>