0

アプリからトリガーされるphpスクリプトがあります。このスクリプトは、GET メソッドを使用して URL から情報を取得し、データベースに格納します。複数のリクエストを実行しようとする場合を除いて、これまでのところ機能しています。

たとえば、GET からデータベースの名前を取得し、それを適切なデータベースに入れ、最後のエントリを取得し、毎回 7 を追加して画面にエコー/出力するというテストを行いました。最新の番号としてデータベースに戻します。私はこれをブラウザ内で毎回リフレッシュして試してみましたが、初めて機能しました。2回目にリフレッシュすると、1回目と同じ結果になりました。試してみましたが同じ結果だったので、ブラウザを閉じてもう一度試しました。それは正常に機能しました。

したがって、問題はスクリプトが 2 回目、3 回目、4 回目と接続を受信しないことに関係していると思います。初回のみ動作するようです。これはキャッシュされているデータの問題だと思いましたが、php スクリプト内でキャッシュをオフにしました。

最初の試行でしか機能しない理由を誰かに教えてもらえますか?

ありがとう

コードで編集

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

checkToken();

function checkToken ()
{



$username='XXXXX';
$password='XXXXX';
$database='Push';


$passed= $_GET['token'];


$pieces = explode(" ", $passed); /*Contains two pieces of information.  
                                       First is for the correct table and 
                                       and the second is the actually data 
                                       that will be put into the tables*/
$search= $pieces[1];

$table= $pieces[0];

echo $table." ".$search;

 $db= new mysqli('localhost', $username, $password, $database);

if (mysqli_connect_errno())
{
    echo 'Error: Could not connect';
    exit;

}

$query = "SELECT * FROM `Tokens` WHERE `Number` LIKE '%$search%' ";


       echo "after";

$result = $db->query($query);
if ($result) {
    $num_results = $result->num_rows;

    $row = $result->fetch_assoc();


    echo $row;

    if (!$row)
    {
        echo "No Token, insert into database";
        insertToken($table,$pieces[1]);

        return;

    }

   /*problem may be around here...? does not always go into (!row)
     after the first time when it is supposed too*/

echo $row['Numbers'];


} else {
   // echo "Query failed: {$db->error}\n";

    echo "No";

}

}




function insertToken ($daTable, $daToken)
{

$username='XXXX';
$password='XXXX';
$database='Push';

 $token=$daToken;

 $con= mysql_connect("localhost",$username,$password);

  mysql_select_db($database,$con);

  $res = mysql_query(
"INSERT INTO $daTable
VALUES ('', '$token')");
if (!$res) {
die('Invalid query: ' . mysql_error());
 } else  {
echo "complete";
 }

mysql_close($link);

  }
4

1 に答える 1

1

多分キャッシュの問題?時間をエコーするように、コードが実行されることを確認してください

于 2012-04-29T22:58:57.297 に答える