2011-11-12 5 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

関連する問題