【问题标题】:FOR looping while grabbing part of the data from $_POSTFOR 循环同时从 $_POST 获取部分数据
【发布时间】:2013-01-23 11:31:13
【问题描述】:

自从我弄乱 for 循环以来已经有一段时间了,并且想知道这是否可能: 这是我所拥有的:

$mn = $_POST['mnpoints'];                   
$mi = $_POST['mipoints'];
$in = $_POST['inpoints'];
$wi = $_POST['wipoints'];

点击提交按钮后,这些从表单中获取的数字将使用以下代码更新 MySQL 数据库

for ($i = 0; $i <=4; $i++ )
{
  mysql_query("UPDATE " . $db_table . " SET `score` = `score` + <VARIABLE HERE> WHERE id=$i") or die (mysql_error());
}

实现这一目标的最佳方法是什么?我总是可以将变量更改为 $m1 - $m4 并且只使用 $m$i

只是想知道是否有其他方法或更好的方法 谢谢

【问题讨论】:

标签: php mysql loops for-loop


【解决方案1】:

“mnpoints”和“inpoints”等...与“score”有何关系?如果您只是想转储所有这些值并将它们相加,那么:

$score = $mn + $mi  + $in +  $wi;
$sql = "UPDATE ... SET score=score+$score";

【讨论】:

  • 它从表单中提取数据,然后将值存储在 $mn $mi $in 等中
【解决方案2】:

将变量放入数组中:

$values = array($mn, $mi, $in, $wi);

然后使用foreach 对其进行迭代,或者使用$i 对其进行索引。

注意:您的代码容易受到 SQL 注入攻击。我强烈建议您阅读 mysqliprepared statements 等:

http://php.net/manual/en/book.mysqli.php

mysql 接口已正式弃用,不应再使用。

【讨论】:

  • 或者在数组上使用 foreach 与 for
  • 感谢 php 和 sql 的新手,将看看并试一试,感谢您的输入
【解决方案3】:
function bulkUpdateSingleColumn($table, $id_column, $update_column, array &$idstovals){
    $sql = "update $table set $update_column = CASE $id_column ";
    foreach($idstovals as $id=>$val){
        $sql .= " WHEN '$id' THEN '$val' \n";
    }
    $sql .= " END
    WHERE $id_column in (" . implode(',', array_keys($idstovals)) . ")";
//debugging info
    echo '<small>'.$sql.'</small>';
    $idstovals=array();       
    db_query($sql);      
    done();       
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 2015-06-13
相关资源
最近更新 更多