2017-03-27 21 views
0
while($data = mysqli_fetch_array($rex)){ 
if($data['expiry']!=null){ 
    $id = $data['id']; 
         $del = "DELETE FROM $itemlist (WHERE id = $id) AND (STR_TO_DATE(expiry,'%a %d-%M-%Y%H:%i:%s')<=CURRENT_TIMESTAMP)"; 
if (mysqli_query($conn, $del)) { 
continue; 
} 

これは私がこれまで試みてきたものですが、何も問題はありません。いずれの行も削除されません。私はVARCHARに有効期限をMon 27-Mar-2017 23:11:50のように保存し、その列をNULLにすることができました。 id = 1の行や、有効期限がnullの行は何もしたくありません。私は何が欠けていますか?私がそれを削除した場合、私はidを再配置できますか?id 1を削除せずにid 2から自動インクリメントを開始しますか?その(ID = $ IDをPHP:有効期限が過ぎ、1に等しくないMySQLから行を削除する

答えて

0

悪い括弧 変更(WHERE id= $id変更 - 。(STR_TO_DATE(expiry,'%a %d-%M-%Y%H:%i:%s')あなたの満了日の形式について

あなたはそれが動作しない無

if($data['expiry']!=null) { 
    $id = $data['id']; 
    $expiry_date = date('Y-m-d H:i:s', strtotime($data['expiry'])); 
    $del = "DELETE FROM $itemlist WHERE id = $id AND $expiry_date<=CURRENT_TIMESTAMP)"; 
    if (mysqli_query($conn, $del)) { 
     continue; 
    } 
} 
+0

ああ!それはヌルを削除してもしても有効期限がまだ届きませんでしたすべての非ヌルを削除しないのですか?このようにしてみてくださいすることができます。 – soulofnature

+0

でも、それが動作しない場合は、私は言っていますあなたはそれを使ってコードを爆発させます。 'STR_TO_DATE'セクションに他のエラーがある場合、このような小さなスニペットからは答えられません。たとえば、プログラムの最後に別の '}'のペアがありません。 – Forbs

0

あなたはこのようにそれを使用するときSTR_TO_DATE関数は、nullを返しますおかげ:)

関連する問題