【问题标题】:PHP PDO Insert row query to MySQLPHP PDO 向 MySQL 插入行查询
【发布时间】:2016-09-22 15:10:26
【问题描述】:

我有一个插入查询,它可以正常工作,但有一些我无法理解!

我的查询:

$query = $db -> prepare ("INSERT INTO table (data_1, data_2, data_3) 
VALUES (:data_1, :data_2, :data_3)");

if ($query -> execute (array (":date_1" => $date_1, ":data_2" => $data_2, ":data_3" => $data_3)) == true AND ($query -> rowCount () > 0))
{
    echo "Success";
}
else
{
    echo "Failed";
}

这将每次返回“成功”,但每隔几分钟将一行插入数据库! (即使我尝试刷新页面 1000 次,我也会得到“成功”但数据库中没有新行)

我找不到问题出在哪里,在网上搜索时也没有找到任何问题的答案!

还有其他方法可以检查行是否已正确插入到数据库中?

更新:

我刚刚发现,当我使用不同的 URL 时,例如 (example.com/?data_1=data1) 和之后 (example.com/?data_1=data2),它工作得很好,可以将行插入数据库!

但是当我再次尝试使用相同的 URL 时,大约 2 或 3 分钟不会插入该行!

更新 2:

在脚本上工作了 10 多个小时后,我只是想可能是因为我在服务器上使用了 Varnish Cache Server!

Varnish 是否有可能因为缓存页面而出现此问题,因此 PHP 脚本无法运行,因为它由 Varnish 提供服务?

*我必须在下周@home 时检查它,因为我无法从其他网络访问服务器!

所以我只想知道禁用 Varnish 是否有可能解决这个问题?因为我对 Varnish 没有太多经验!

更新 3:

我刚刚禁用了 Varnish,它工作正常,关于使用 Varnish,有什么方法可以配置 Varnish 以更好地处理动态页面?

*我想,但我不确定 Varnish 是否能像动态页面那样工作,它也会产生一些安全问题!我没有检查任何东西,我也不是使用 Varnish 的专家,但根据我对 PHP 的理解,我认为将 Varnish 用于动态页面并不是一个好主意!

【问题讨论】:

  • PHP 不“只是运行”。如果它正在运行,那么你正在做的事情正在导致它。
  • @MarcB 你能再清楚一点吗?
  • @MarcB THX 为你解答,即使一开始并不清楚,但帮助我思考你的话并找到正确的方向来解决问题:)

标签: php mysql pdo insert


【解决方案1】:

如果你有 Varnish,那么是的,它会缓存 URL。因此,如果您如此 example.com/?data_1=data2,第一次它将起作用,因为 URL 未缓存。第二次 Varnish 将返回页面的内容并且您的服务器不会被调用,因此 PHP 将不会“运行”。 您可以打开 Varnish(我只在您的网站没有很多访问者的情况下建议使用)或使用 POST 并让 POST 成为您的 vcl 中的通行证,或者在您的 GET 中为您一直想要运行的功能提供可识别的内容(然后为你的 vcl 中可识别的东西做一个 pass)。

【讨论】:

  • Thx,实际上我禁用了 Varnish 并且它运行良好 :) 还有其他方法可以配置 varnish 以更好地与动态页面一起使用吗?因为在我的情况下使用 POST 不是一个好选择!
猜你喜欢
  • 2013-09-03
  • 2014-05-14
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2015-09-01
  • 2018-11-28
  • 1970-01-01
相关资源
最近更新 更多