0

我正在创建简单的星级评分系统,现在一切正常,但是当涉及到更新 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'
4

3 回答 3

2

在 windows7 localhost 解析为::1(您可以尝试在 cmd 中执行 ping 操作)。如果您访问您的页面,请重localhost/somepage.php127.0.0.1/somepage.php

于 2013-04-24T11:12:36.900 回答
2

当字段为空时,更新何时附加 ipaddress 可能会失败,在这种情况下......

UPDATE star_ratings 
SET rating = '$rating', 
total_rating = '$total_rating', 
total_rates = '$total_rates', 
ipaddress = CONCAT(ifnull(ipaddress,''), ',$ipaddress')

如果任何部分为空(空传播), concat 将返回空,因此以下将产生空

select concat(null, 'hello') 

ifnull () 函数将用第二个参数替换空的第一个参数

select ifnull(null,'hello') => 'hello'

select ifnull('hi','hello') => 'hi'
于 2013-04-24T11:26:28.427 回答
1

使用函数CONCAT_WS(' ',field1,field2)代替CONCAT()..

于 2013-04-24T11:13:16.787 回答