【问题标题】:Select $variable and column from table?从表中选择 $variable 和列?
【发布时间】:2015-05-17 18:23:53
【问题描述】:

如何从表中同时选择 $ss 和 extra_column? 这是我的代码,我在 SELECT 上遇到错误

if(isset($_POST['search'])){
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $selected) {
$ss="".$selected.", extra_col";
$options=mysql_query("SELECT $ss FROM table");
 while($arl=mysql_fetch_array($options)) {
  echo $arl['col1']; //echo if selected
  echo $arl['col2']; //echo if selected
  echo $arl['col3']; //echo if selected
  echo $arl['extra_col']; //echo anyway its the extra_col
  }


  }else{
 echo "<b>Please Tick Atleast One Option.</b>";
  }
  }

【问题讨论】:

    标签: php mysql select post foreach


    【解决方案1】:

    这有很高的sql注入风险,你真的应该使用白名单来确保只有存在的列可以添加到你的字符串中;您应该验证所有 $_POST 值。

    话虽如此,您在不应该使用引号的地方使用引号,如果特殊列名需要引号,则应使用反引号:

    $ss="`".$selected."`,";
    $options=mysql_query("SELECT $ss extra_col FROM table");
    

    从我从您的代码中可以看出,您可能希望在循环中构建您的$ss 字符串并在它之后运行您的查询。

    类似:

    $ss = '';
    foreach($_POST['check_list'] as $selected) {
      $ss .= "`".$selected."`, ";
    }
    $options=mysql_query("SELECT $ss extra_col FROM table");
    

    【讨论】:

    • hmph ,好吧,我真的不介意注入部分,它不是登录表单,而是使用标签的搜索表单,而 $_post 清单是标签词。如果没问题,我会用完整的代码编辑问题^^
    • @MicaButu 不管它是做什么用的,如果有人发帖例如id`, * FROM users; --怎么办?这会将您的users 表的所有信息发送给攻击者。
    • em 表中根本没有用户,甚至在这个数据库中也没有,所以当没有什么可以攻击的时候我不担心@jeroen 我编辑了问题是现在图片更清晰了吗?
    • @MicaButu 你没抓住重点,这只是一个例子,我也可以查询mysql系统表。我答案末尾的代码似乎正是您所需要的。除了 sql 注入 ;-)
    • 你能帮我做一件事吗 ^^ 我在更新的问题中显示的回声,他们给出了错误......这是未识别的索引有什么想法吗?
    【解决方案2】:

    您的问题完全不清楚。但刚开始您应该将您的查询字符串创建修复为:

    $ss="`".$selected."`, extra_col";
    $options=mysql_query("SELECT $ss FROM table");
    

    【讨论】:

    • 那么您的答案将是 $ss ="col1, extra_col, col2, extra_col, col3, extra_col";你能明白为什么吗:?
    • 不,我看不到,您的循环适用于每个值。所以它不是$ss.= 它只是$ss= 所以它永远不会有价值"col1, extra_col, col2, extra_col, col3, extra_col"
    • 嗯...但是它的 foreach 确实循环了它
    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多