0

MYSQL データベースからデータを選択してデータを挿入するための PHP コードがいくつかあります。私がやろうとしていることは次のとおりです: - JSON ペイロードからバーコードのシリアル番号を受け取る - MySQL データベースに接続する - データベース テーブル (パス) をチェックして、バーコードが登録されているかどうかを確認する - 登録されている場合は、このバーコード + タイムスタンプを書き込む別のテーブルに (アクティベーション)。次に、成功したことを示す JSON メッセージを返します。そうでない場合は、バーコードがまだ登録されていないことを示す JSON メッセージを返します。

以下のコードは、特定のバーコードを初めてチェックしたときに問題なく動作します。ただし、その後、アクティベーション テーブルに新しいエントリは挿入されません。代わりに、「アクティベーションが記録されていません」というメッセージが表示されます..

私が間違っていることは何か分かりますか?あなたが助けることができればありがとう!

アンドリュー

<?php
//Messages will be returned as JSON data
header("Content-type: application/json");

//read the POST payload
$payload = json_decode(file_get_contents('php://input'), true);

//get a database connection
require_once("../class/Database.php");
$db = Database::get();

//check for a valid pass
$barcode = $payload['barcode'];
$statement = $db->prepare("SELECT * FROM passes WHERE barcode = ?");
$statement->execute(array($barcode));
$row = $statement->fetch(PDO::FETCH_ASSOC);
if ($row) {
  $statement2 = $db->prepare("INSERT INTO activations(activationDatetime, barcode)     VALUES (?,?)");
  $statement2->execute(array(date("Y-m-d G:i:s"),$barcode));
  if ($statement2->rowCount()==0) {
  print json_encode(array("msg"=>"Activation not recorded"));
  } else {
  print json_encode(array("msg"=>"Pass successfully activated"));
  }
} else 
{
  print json_encode(array("msg"=>"Pass not registered"));
  exit();
}

flush();

exit();

?>
4

2 に答える 2

0

ページのデバッグ段階でSQLエラーを出力する必要があります。

バーコードフィールドはユニークだと思います。

于 2013-01-15T07:09:23.983 に答える
0

if ($statement2->rowCount()==0) {この記述は間違っていると思いますので、ご確認ください。挿入クエリであるため、そこで「rowCount」を使用することはできません。

そして、メッセージが正しく表示されないという問題だけが挿入されていると思います。

于 2013-01-15T07:06:02.737 に答える