【问题标题】:php array from mysql not working来自mysql的php数组不起作用
【发布时间】:2014-08-04 18:09:05
【问题描述】:

我不是 php 和 mysql 方面的专家,但我正在尝试,我有一个问题要解决,但有点卡住了......

我想向用户显示一个多选菜单,其中包含他之前所做的选中选项,并且存储在 mysql 中。我的代码的问题,我很确定,是在 foreach 循环中。用户预先做出的选择以 1,2,3,4 等格式存储......现在我需要在他试图编辑他的信息时检查这个预先选择的选项。

他的选择保存在一个sql表中,所有选项都在一个单独的表中。我希望我写了这个,以便你能理解。谢谢你的帮助。下面是我的代码到目前为止,它正在工作,但在这种情况下,用户有 4 个预选选项,所有内容在我们的多选中显示 4 次...

$skupine = mysql_real_escape_string($rows_blog['sku_id']);
$skupine_id = explode(',',$skupine);

echo "<select name='skupina[]' multiple='multiple'>";

$sql_skupina = "SELECT sku_id, title FROM skupine ORDER BY sku_id DESC";
$result_skupina = mysql_query($sql_skupina);

while ($row_skupina = mysql_fetch_array($result_skupina)) {

foreach ($skupine_id as $value){

echo '<option value="'.$row_skupina['sku_id'].'"'.    (!strcmp($row_skupina['sku_id'],$value)?' 
selected':'').'>'.$row_skupina['title'].'</option>';
}
}       
echo "</select>";

【问题讨论】:

  • $rows_blog 是如何填充的?
  • 预选的 id 插入如下: $skupine = $_POST['skupina']; $skupine_id = implode(',',$skupine);

标签: php arrays loops variables foreach


【解决方案1】:

删除您的 foreach 循环(也不要忘记右括号),而不是 strcmp,使用 in_array

echo '<option value="'.$row_skupina['sku_id'].'"'.    (in_array($row_skupina['sku_id'], $skupine_id)?' 
selected':'').'>'.$row_skupina['title'].'</option>';

结果将是,如果 $row_skupina['sku_id'] 是预选选项之一(因此在 $skupine_id 数组中),则该选项将在下拉列表中被选中。

附带说明一下,您应该真正停止使用mysql_* 函数,而改用PDOmysqli

【讨论】:

  • 谢谢你,它就像一个魅力 :) 并感谢有关 PDO 的建议,我会调查它
  • 如果它符合您的要求,请不要忘记接受答案:)
  • 旁注:mysqli_/PDO 的使用并不是防止 SQL 注入的保障措施;不是靠自己就是。将 mysqli_* with prepared statementsPDOprepared statements 一起使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多