Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP_获取问题多次尝试时未刷新数据_Php_Mysql_Web Services_Html - Fatal编程技术网

PHP_获取问题多次尝试时未刷新数据

PHP_获取问题多次尝试时未刷新数据,php,mysql,web-services,html,Php,Mysql,Web Services,Html,我有一个从我的应用程序触发的php脚本。此脚本使用GET方法从url检索信息并将其放入数据库。到目前为止,我已经让它工作了,除了当我尝试做多个请求时 例如,我做了一个测试,每次我都会从GET中获取数据库的名称,将其放入相应的数据库中,检索最后一个条目,然后每次添加7,并将其作为最新的数字回显到屏幕/将其放回数据库中。我试着在我的浏览器中点击刷新每次和第一次它的工作。第二次我点击刷新,它给了我和第一次一样的结果。我一直在尝试,但结果还是一样,所以我关闭了浏览器,再试一次。它本该起作用的 所以我认为

我有一个从我的应用程序触发的php脚本。此脚本使用GET方法从url检索信息并将其放入数据库。到目前为止,我已经让它工作了,除了当我尝试做多个请求时

例如,我做了一个测试,每次我都会从GET中获取数据库的名称,将其放入相应的数据库中,检索最后一个条目,然后每次添加7,并将其作为最新的数字回显到屏幕/将其放回数据库中。我试着在我的浏览器中点击刷新每次和第一次它的工作。第二次我点击刷新,它给了我和第一次一样的结果。我一直在尝试,但结果还是一样,所以我关闭了浏览器,再试一次。它本该起作用的

所以我认为问题在于脚本没有收到第二、第三、第四个连接。。。时间到了。这似乎只是第一次起作用。我认为这是缓存数据的问题,但我在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);

  }

可能是缓存问题?尽量确保代码得到执行,就像回显时间一样

无论您认为自己如何描述问题……发布一些代码;-)如果您一直点击刷新,则会发送相同的URL。。。那么为什么会得到不同的结果呢???@YaronUliel请看编辑后的答案。。。谢谢请注意,给出的代码也是我的应用程序发送数据的脚本。在发送的数据中有两段代码(因此使用_GET进行分解)。第一个片段是插入代码的正确表,第二个片段是要放入的字符串in@Pr0no请参阅编辑后的答案。。。谢谢请注意,给出的代码也是我的应用程序发送数据的脚本。在发送的数据中有两段代码(因此使用_GET进行分解)。第一个片段是插入代码的正确表,第二个片段是要放入的字符串in@Hamish不,对于我用相同函数编写的测试脚本,它总是存储添加了7的数字。所以下一次,行中的最后一个条目将添加另一个7,以此类推。。。请参阅编辑的答案,了解我在脚本中如何解决缓存问题。我读到的是:若对应于令牌的行不存在,则插入它。如果有,什么也不做。为什么在第一次点击后,你会在这里期待一个动作?“一个动作”的意思是,特别是,分支到!谢谢你的答复。它调用另一个方法insertToken,如果该方法不存在,则将其放入数据库。对吗?是的。但是,在第二次调用时,数据库应该如何更改?如果您再次调用它,它将找不到要插入的内容,并将字段设置为已设置的值。所以“没有效果”似乎是你想要的行为,但你似乎也不满意。我想我错过了什么