【问题标题】:PHP, MYSQL array from form checkboxes into variablesPHP,MYSQL数组从表单复选框到变量
【发布时间】:2016-10-07 13:57:00
【问题描述】:

我正在创建一个基于 sql 查询的具有多个复选框的表单,因此结果值通常总是不同的

<input type="checkbox" name="warrior[]" value="<? echo $warrior_id; ?>">

但我不知道如何获取用户从数组中选中的框的值。每个复选框都有我数据库中一行的 ID。

我需要运行在另一个查询中检查的每个 ID,以显示脚本其余部分所需的更多详细信息。

"SELECT col1, col2 FROM table WHERE id='$????'"

数组中最多有 10 个值(最多 10 个复选框)

感谢您的建议

【问题讨论】:

标签: php sql arrays checkbox


【解决方案1】:

在 HTML 中

<input type="checkbox" name="warrior[]" value="<? echo $warrior_id; ?>">

在 PHP 中 - 你可以内爆检查值数组。并在您的数据库中检查IN

$getvalues = $_GET['warrior']; //only for example i am using this. you have to filter and do validation on it.
$getImplodeValue = implode(',', $getvalues);

$sqlQuery = "SELECT col1, col2 FROM table WHERE id IN '$getImplodeValue'";

【讨论】:

  • 请注意,此代码安全。攻击者可以执行 SQL 注入。您应该使用 PDO 或 Prepared Statements 并在将它们放入您的语句之前验证每个 ID。
  • 请阅读我已经告诉他我只想解释他如何使用 implode 和 in 的评论。
  • 谢谢,所以当我有查询时,我是否使用 while($row = mysql_fetch_array($sqlQuery)) { 循环查看结果
  • 如果对您有帮助,别忘了点赞并接受答案;)。
【解决方案2】:
  1. 检查您的验证

2.然后在下面使用:

$getWarrior = $_REQUEST['warrior'];  //get value 

$arrWarrior = '';

if(!empty($getWarrior))
{          
  $arrWarrior = implode(',', $getWarrior);
}

$sqlQuery = "SELECT col1, col2 FROM table WHERE 1";
if(!empty($arrWarrior))
{
   $sqlQuery .= " and id IN ($getImplodeValue)";
}

【讨论】:

    猜你喜欢
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2015-07-23
    • 2014-05-31
    • 2020-03-30
    • 2012-10-16
    • 2023-03-16
    相关资源
    最近更新 更多