私のコードで助けが必要です。私はstop_date
の要素のリストをデータベースに保存して、その行を削除したいと思っています。私は$current_programme_date
という変数を使用していますが、データベースから要素のリストを取得しています。変数$current_programme_date
を使用して要素を検索したいところで、データベース内で削除したい行を見つけることができます。ここでデータベース内の要素を検索して行を削除します
はここ$current_programme_date
20170727060000
20170727091500
20170727100000
20170727110000
20170727114500
20170727121500
20170727130000
20170727133000
20170727134500
20170727143000
ための要素である$sql
の結果である:ここで
DELETE from programs where stop_date ='20170727011000'
DELETE from programs where stop_date ='20170727021000'
DELETE from programs where stop_date ='20170727030000'
DELETE from programs where stop_date ='20170727035000'
DELETE from programs where stop_date ='20170727050500'
DELETE from programs where stop_date ='20170727013000'
DELETE from programs where stop_date ='20170727022000'
DELETE from programs where stop_date ='20170727040500'
DELETE from programs where stop_date ='20170727050000'
DELETE from programs where stop_date ='20170727050500'
DELETE from programs where stop_date ='20170727031000'
DELETE from programs where stop_date ='20170727040000'
DELETE from programs where stop_date ='20170727044500'
DELETE from programs where stop_date ='20170727051000'
DELETE from programs where stop_date ='20170727053500'
DELETE from programs where stop_date ='20170727020000
はPHPです:
<?php
//open the database File
$db = new SQLite3('myChannel.db');
if(!$db)
{
echo $db->lastErrorMsg();
}
$sql = "SELECT * FROM programs";
$results = $db->query($sql);
while($row = $results->fetchArray(SQLITE3_ASSOC))
{
$current_time = (date('Ymdhis'));
$current_programme_date = ($row['stop_date']);
if($current_time > $current_programme_date)
{
$sql = "DELETE from programs where stop_date ='$current_programme_date'";
print_r($sql);
}
}
?>
私が何を期待していますどのような変数を使用してデータベースから各要素を探したいですか?を参照して、現在の時刻と比較できるかどうかを確認します。たとえば、プログラムの日付書式が終了した場合、$current_programme_date
の形式は20170727060000
で、現在の日付形式は20170727180300
です。 。
私のコードでは、すべてのデータをフェッチしてすべての行を削除するため、変数を使用しているときにデータベース内で正しい要素が見つからないということが起こります。現在のプログラムの日付形式を現在の日付形式と比較しているときにデータベース内の正しい行を探したい場合20170727180300
時間が既に過ぎているので、現在のプログラムの日付を削除することなくすべての行を削除できます私の現在の日付形式から渡されていません。
変数を使用しているときにデータベース内の行を削除する要素を見つける方法を教えてください。
編集:これを試しても、データベースの行は削除されませんでした。
$sql = "SELECT * FROM programs";
$results = $db->query($sql);
$stop_date = [];
while($row = $results->fetchArray(SQLITE3_ASSOC))
{
$current_time = date('YmdHis');
$current_programme_date = strtotime($row['stop_date']); // see here :)
if($current_time > $current_programme_date)
{
$stop_date[] = $current_programme_date; //push dates here
}
}
$sql = 'DELETE FROM programs WHERE stop_date IN ("' . implode('", "', $stop_date) . '")';
print_r($sql);
//finally delete all rows with that stop_date
$db->changes();
echo "deleted succcessfully!";
私は 'データベースから単一の要素を検索し、私の現在の時刻の形式の日付と日付を比較することができますどのように私の例を示してくださいすることができ20170727180300'私は、行を削除し、次の要素を見つけて、そのことができる前にに? –
@RobertJones私はあなたもこの行を修正する必要があると思います。(日付( 'YmdHis')); '大文字の' H'を参照してください12hrのために24時間 'h' –
ああ、ありがとう、時刻が既に渡されているので、現在の日付形式と比較するときにデータベース内の正しい日付形式を探して、全体の行を削除せずに正しい日付形式を削除できますか? –