如果行不存在,则向数据库添加行

时间:2016-11-19 17:33:06

标签: php html mysql sql

我有一个数据库, visitorCounter ,我希望每当有人访问该页面时都会添加一个新行。我获取了他们的IP,然后我检查他们的IP是否在数据绑定中没有一行。如果没有,我添加一个新行。

sess = tf.InteractiveSession()

z_pi_translation = tf.random_normal([100,20])
z_mu_translation = tf.random_normal([100,20,3])

id_translation = tf.argmax(z_pi_translation,1)
translations = z_mu_translation[:,id_translation,:]

sess.run(translations)

编辑:添加一行包含用户代码:

onStartCommand

访问者进入网站,用户在数据库中为空。但是当他登录时,它会保持为空。知道为什么吗?

2 个答案:

答案 0 :(得分:2)

您应该将此作为一个声明。关键的想法是on duplicate key update

因此,为表添加一个唯一索引,以便数据库每个ip强制执行一行:

create unique index unq_visitorscounter_ip on visitorsCounter(ip);

然后,将值更新/插入为:

INSERT INTO visitorsCounter(ip, entries)
    VALUES (ip, 1)
    ON DUPLICATE KEY UPDATE entries = entries + 1;

除了简化代码之外,这是表达逻辑的更正确的方法。如果不同的应用程序/线程同时插入相同的ip,则代码可能具有竞争条件。

答案 1 :(得分:0)

我认为你永远不会进入"更新" if语句是您不应该检查null,而是检查false值。 根据{{​​3}}的文档,您将在失败时返回false

所以你的代码应该用

更好地工作
if($result !=== false) {
    ...
}