2015-06-07 38 views
0

我需要将评论ID列表插入列liked_comments如何将数字列表插入到MySQL表中?

例如,如果用户喜欢ID为72,839, 37的评论,则它们将被存储在那里。

$id = mysqli_real_escape_string($conn,$_POST['id']); // a number posted using ajax from another file 
$username = mysqli_real_escape_string($conn,$_SESSION['username']); 

if (!empty($_POST) && isset($_SESSION['username'])){ 
     mysqli_query($conn,"UPDATE users SET liked_comments=liked_comments+$id WHERE username='$username'"); 
} 

目前这只是增加的ID,仿佛它们是数字,而不是字符串,但我需要它是71,789,17371 789 173用空格或逗号分隔。添加+' '++','+似乎没有工作。

+0

你不要!!!!!! – Strawberry

+0

我最喜欢的名单是**'2,3,banana,5,sqrt(49)**。 – spencer7593

回答

2

在MySQL中使用+不能连接,你必须使用concat

$Query = "UPDATE users SET liked_comments=concat(liked_comments, ',', '$id') WHERE username='$username'"; 

而且,而是在列存储逗号分隔值,你可以评论部分移动到分离表,其中每行包含PostIDUserID,这将是更加整洁和灵活。

0

做到这一点的最佳方法是将数组存储在数据库中。例如;如果我们有这样的数组:

$liked_comments_array = array(71, 789, 173);

你可以把它在阵列中存储像这样:当你从数据库中获取这个数组

$liked_comments_array = serialize($liked_comments_array); 
// now insert this into the database 

然后,只需反序列化它像这样:

$liked_array_comments = unserialize($field_from_database);

+0

我不认为这是很好的解决方案,想想如果OP需要用户明智的评论,他必须在php中获得结果并反序列化并比较 –