我正在制作简单的星级评分系统现在工作正常但是当谈到更新IP地址时,它给了我这样的痛苦......
我使用此查询创建了表
return 'CREATE TABLE star_ratings ('.
'id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY,'.
'post_id INT (11),'.
'rating FLOAT (11) DEFAULT 0,'.
'total_rating FLOAT (11) DEFAULT 0,'.
'total_rates INT (11) DEFAULT 0,'.
'ipaddress LONGTEXT'.
');
检查图像中的IP地址列
现在尝试使用CONCAT()
更新它,但它没有添加任何值。当我尝试在没有CONCAT()
的情况下更新而不是更新值时进行调试。我只是想知道这不起作用以及我错在哪里。
如果您在ipaddress
栏中注意到其他事情我会变得很奇怪ipaddress
::1
而不是127.1.1.1
这是我的更新查询
UPDATE star_ratings
SET rating = '$rating',
total_rating = '$total_rating',
total_rates = '$total_rates',
ipaddress = CONCAT(ipaddress, ',$ipaddress')
WHERE post_id = '$post_id'
答案 0 :(得分:2)
在Windows7上,localhost解析为::1
(您可以尝试在cmd中ping)。如果您通过localhost/somepage.php
访问您的网页,请尝试127.0.0.1/somepage.php
。
答案 1 :(得分:2)
当字段为空时,可能更新失败时何时附加ipaddress,在这种情况下......
UPDATE star_ratings
SET rating = '$rating',
total_rating = '$total_rating',
total_rates = '$total_rates',
ipaddress = CONCAT(ifnull(ipaddress,''), ',$ipaddress')
如果任何部分为null(null propogation),则concat将返回null,因此以下将产生null
select concat(null, 'hello')
ifnull() function将使用第二个参数替换空的第一个参数
select ifnull(null,'hello') => 'hello'
和
select ifnull('hi','hello') => 'hi'
答案 2 :(得分:1)
使用函数CONCAT_WS(' ',field1,field2)
代替CONCAT()
..