我搜索过类似的问题,但找不到我特定问题的正确答案。我的表(表)中有一个列(数据),其中包含逗号分隔的值,这些值是id,例如
我使用in_array函数来检索while循环中$ data值的出现次数。所以我使用sql函数来检索while循环中所有行中出现某个值(例如“5”)的次数。
问题是我只能检索$data
值本身(即没有逗号本身就是整数)所以基于我在列表中的示例,我只能检索5次(行) 3)。我希望在所有行中出现三次值'5'。这是我的下面的代码,任何帮助将不胜感激。 $ selectiontext变量是用户从表单输入的内容。
$sql_frnd_arry_mem1 = mysql_query("SELECT data, id FROM table WHERE data='$selectiontext'");
while($row=mysql_fetch_array($sql_frnd_arry_mem1)) {
$datacheck = $row["data"];
$id = $row["id"];
}
$frndArryMem1 = explode(",", $frnd_arry_mem1);
if (($frnd_arry_mem1 !=="") && (!in_array($id, $frndArryMem1))) {echo $id;}
谢谢。
答案 0 :(得分:0)
你会一直覆盖变量$datacheck
和$id
,只留下最后一个版本。将那个大括号向下移动两行,如下所示:
$sql_frnd_arry_mem1 = mysql_query("SELECT data, id FROM table WHERE data='$selectiontext'");
while($row=mysql_fetch_array($sql_frnd_arry_mem1)) {
$datacheck = $row["data"];
$id = $row["id"];
$frndArryMem1 = explode(",", $frnd_arry_mem1);
if (($frnd_arry_mem1 !=="") && (!in_array($id, $frndArryMem1))) {echo $id;}
}
答案 1 :(得分:0)
我不完全确定您的要求,不清楚您打算做什么,因为缺少代码的一部分。 我假设您要检查CSV文件($ frnd_arry_mem1是行)的逗号分隔的每一行与列数据中的数据,如果发生任何逗号分隔数据(不)。 假设您已经在循环CSV,这将是代码(未经测试):
注意:如果你可以做其他事情,在循环中检索数据可能效率很低 - 但我不能告诉我,因为我不知道你的脚本的完整规格。
如果我的规格有误,请澄清,我会尽力帮助。
$sql = "SELECT data, id
FROM table
WHERE data='$selectiontext'";
$sql_frnd_arry_mem1 = mysql_query($sql);
$results = array();
// get values to check
while ($row = mysql_fetch_array($sql_frnd_arry_mem1))
{
$results[] = array(
'datacheck' => $row["data"],
'id' => $row["id"],
);
}
foreach ($results as $result)
{
$frndArryMem1 = explode(",", $frnd_arry_mem1);
$data = explode(',', $result['datacheck']);
foreach ($data as $d)
{
if (($frnd_arry_mem1 !=="") && (!in_array($d, $frndArryMem1)))
{
echo 'DEBUG: Record #' . $id . ' not found, value:' . $d . '</br>';
}
}
}