使用SQL行作为数组

时间:2013-06-27 14:36:43

标签: php sql

问题在于:

我的sql数据库中有一行(选民),其中包含已经投票的人的昵称:

"Nickname1", "Nickname2", "Nickname3", 

但是,如果我尝试在数组中使用此行来检查登录用户是否已经投票:

$voters = array($data['voters']);
if (!in_array($_SESSION['user'], $voters)) { // count his vote // } else { echo 'already voted' };

它根本不起作用。如果用户已投票但无论如何都要尝试,他的投票将被计算在内,并且他会在我的选民行中再次加入。

我的代码出了什么问题?感谢

3 个答案:

答案 0 :(得分:0)

您的代码错误,因为您不必使用单行来存储多个选民,而是您应该分别拥有多行来存储单个选民。了解数据库规范化或您的工作将是艰难而无效的

无论如何,这是你的解决方案

$voters = explode(",",$data['voters']);
if (!in_array('"'.$_SESSION['user'].'"', $voters)) { // do something... }

答案 1 :(得分:0)

您需要一个桌上式系统。对于它,你需要一个新的表。像那样:

 |question_id|voter|
  223      |nickname1
  223      |nickname3
  225      |nickname1

因此,您可以获得一系列选民以获得特定问题。

答案 2 :(得分:0)

您似乎正在数组上创建一个数组。

如果print_r($选民)显示类似

的内容
Array
(
    [0] => "Nickname1", "Nickname2", "Nickname3"
)

尝试避开阵列。

如果没有,$ data ['选民']是用逗号分隔的字符串,请尝试使用explode函数生成数组

$voters = explode(",", $data['voters']);