2011-11-12 4 views
2

일부 PHP 코드를 추가하는 대신 쿼리에 3 개의 IF 문을 넣으려고합니다. FUNCTION admin_demo.in_array does not exist배열이 체크인 인 mysql 쿼리의 IF 문

if($pr_aantal[$i] > 0) 
{ 
    // voer query uit 
    $sql = "INSERT INTO planning_producten 
     (
      planning_id, 
      product_id, 
      aantal, 
      datum_snijden, 
      datum_zetten, 
      datum_uitbesteed, 
      user_id 
     ) 
     VALUES 
     (
      '".$planning_id."', 
      '".$pr_id[$i]."', 
      '".$pr_aantal[$i]."', 
      IF(in_array('1', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_snijden."','%d-%m-%Y'), '0000-00-00'), 
      IF(in_array('2', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_zetten."','%d-%m-%Y'), '0000-00-00'), 
      IF(in_array('3', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_uitbesteden."','%d-%m-%Y'), '0000-00-00'), 
      '".$_SESSION['user_id']."' 
     ) 
    "; 

    // resultaat van query 
    if(!$res = mysql_query($sql,$con)) 
    { 
     include('includes/errors/database_error.php'); 
    } 
} 

$pr_bewerking_id[$i]가 생성됩니다 표시되는 오류입니다 :

while ($row_i = mysql_fetch_array($res_i)) 
{ 
    $i++; 

    // maak select name 
    $name_bewerking_id = 'name_bewerking_id'.$i; 
    ?> 

    <tr valign="top"> 
     <td> 
     <select name="<?php echo $name_bewerking_id ?>[]" multiple="multiple" size="2"> 
     <?php 
      $sql_bew = "SELECT id, bewerking FROM bewerkingen ORDER BY orderby ASC"; 
      $res_bew = mysql_query($sql_bew,$con); 
      while ($row_bew = mysql_fetch_assoc($res_bew)) 
      { ?> 
       <option value="<?php echo $row_bew['id']; ?>"><?php echo $row_bew['bewerking']; ?></option> 
     <?php } ?> 
     </select> 
     </td> 
    </tr> 
<?php } 

그리고

$pr_bewerking_id[$i] = array(); 

for ($i = 0; $i <= $pr_aantal_regels; $i++) 
{ 
    $pr_bewerking_id[$i] = $_POST['name_bewerking_id'.$i]; 
} 

어떤 제안을 통해 보내?

+0

if와 함께 무엇을하려합니까? 물론 그곳에서 일하지 않을 것입니다. – Loko

답변

1

나는 당신이 변경하려는 생각 :

IF(in_array('1', '".$pr_bewerking_id[$i]."'), 

이 사람 :

IF(FIND_IN_SET('1', '" . $csv_string . "'), 

당신은 또한 당신의 코드에서 SQL 주입 취약점을 가지고있다. mysql_real_escape_string 또는 매개 변수가있는 쿼리를 사용하십시오.

+0

그게 작동하지만 지금은 항상 '0000-00-00'데이터베이스에 넣습니다. mysql_real_escape_string을 추가하면 배열이 삭제됩니다. – Muiter

+0

@Muiter : 쉼표로 implode를 사용하여 배열을 문자열로 변환하십시오. –

+0

implode -> 유효하지 않은 인수가 전달되었고 emploded 변수가 내용 대신 $ pr_bewerking_id_imploded [$ i]로 표시됩니다. – Muiter