1

このコードを機能させることができないようです。foreach 行を使用して別のクエリを実行できますか? これは、電子メールを送信する cron スクリプトです。電子メールが送信されたことを確認できるように、cron の実行時にステータスを「0」から「1」に更新する必要があります。以下のコードの UPDATE クエリは機能しません。

// Connect to the database
$conn = new PDO("mysql:host=$DB_HOST;dbname=$DB_DATABASE",$DB_USER,$DB_PASSWORD);

// Get the emails to send and ensure the status shows they have not been sent already
$stmt = $conn->prepare("SELECT id, userid, title, message FROM reminders WHERE time=CURDATE() AND status='0'");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($results AS $row){
echo $row['title'] . ' ' . $row['message'] . ' ' . $row['id'] . '<br />';
$update = $conn->prepare("UPDATE results SET status='1' WHERE id=:id");
$update->bindParam(':id', $row['id']);
$update->execute();
};

編集: テーブル名が間違っていました。解決済み

4

3 に答える 3

4

値のデータ型を指定するのはどうですか ( [わからない] デフォルトのデータ型は文字列で、サーバーは自動的に解析します)?PDO::PARAM_INT

$update->bindValue(':id', $row['id'], PDO::PARAM_INT);

PDO 事前定義定数

于 2012-09-07T06:28:03.190 に答える
2

bindValueおそらく、データ型を指定して指定する必要があります。

$update = $conn->prepare("UPDATE results SET status=1 WHERE id=:id");
$update->bindValue(':id', $row['id'], PDO::PARAM_INT);
$update->execute();
于 2012-09-07T06:26:54.080 に答える
0

質問に正しい解決策を含めるためだけに-回​​答形式:

結果変数を使用してresulsから、テーブルを更新しようとしていますresults。更新するテーブルは本当に「results」という名前ですか、それともこの情報は変数の名前から忍び寄っていますか?

クエリから、テーブルで作業しているように見えますreminders

于 2012-09-07T06:44:52.253 に答える