2016-04-04 2 views
0

私は、顧客がアイテムを選択して日付を設定し、送信後にアイテムのリストが表示されるシナリオを持っています。mysqli_fetch_assoc()は、パラメータ1がmysqli_resultであることを期待していますが、他の状態で正常に動作していますか?

CODE:

$connection = database_connection(); 
$table= "cement_weekly_item"; 
$query = "SELECT * FROM {$table} "; 
if(isset($_POST['item_name']) && !empty($_POST['item_name'])){ 

$item = $_POST['item_name']; 
$query .=" WHERE item = '{$item}'"; 
} 
if(isset($_POST['from_date']) && !empty($_POST['from_date'])){ 


$from_date = date("d-M-Y", strtotime($_POST['from_date'])); 
echo $from_date; 
$query .=" SELECT * FROM 'cement_weekly_item' WHERE date = '{$from_date}'"; 
} 



/*--------------------------------------------------------------*/ 
$result = mysqli_query($connection, $query); 

とhtml内側:

<?php 

     while ($item = mysqli_fetch_assoc($result)) { 

      echo "<tr><td> {$item['item']} </td>"; 
      echo "<td> {$item['sub_category']} </td>"; 
      echo "<td> {$item['unit']} </td>"; 
      echo "<td> {$item['Vendor']} </td>"; 
      echo "<td> {$item['price']} </td>"; 
      echo "<td> {$item['date']} </td></tr>"; 
     } 

     ?> 

私はちょうど項目、その作業罰金を設定していた場合。しかし、私はちょうど私にエラーを与える日付を設定している場合

警告:mysqli_fetch_assoc()は、パラメータ1がmysqli_result、ブール値が与えられると期待しています

私は間違っていますか?日付条件付き

+0

あなたの 'query'を' echo'して何が返ってくるかチェックしてください!! – Saty

+0

SELECT * FROM 'cement_weekly_item' WHERE date = '01 -Jan-2016 ' –

+0

代わりにバックテーブルを使用して 'quotes'フォームを削除する – Saty

答えて

3

2つの問題:

  1. あなたは既にクエリを持って$queryへのクエリを連結しています。代わりに、上書きしてください。

  2. テーブル名'cement_weekly_item'の引用符を使用していますが無効です。あなたのdate列がDATEを入力している場合

また、ないVARCHARは、それはおそらく形式YYYY-MM-DDが必要なので、Y-m-ddate()呼び出しであなたの形式を変更します。

更新コード:

$from_date = date("Y-m-d", strtotime($_POST['from_date'])); 
echo $from_date; 
$query =" SELECT * FROM cement_weekly_item WHERE date = '{$from_date}'"; 
// ^no concat ^no quotes    

サイドノート:あなたのコードは、SQLインジェクションに対して脆弱です。値をパラメータとして使用するPrepared Statementを使用します。

+0

「date」はmysqlのキーワードではありませんが予約されていません。その後に__(R)__がないことを確認してください。 https://dev.mysql.com/doc/refman/5.7/en/keywords.html – Saty

+0

@Saty ahはい、元々は予約語でしたが、多くの人がそれを使用していたため削除されました。ありがとう。 – MrCode

+0

@A.Mujeebはあなたの '日付'の列はvarcharまたは日付ですか?それについて私の編集を参照してください。 – MrCode

関連する問題