【问题标题】:How to pass select box value with array and store in Database using php如何使用数组传递选择框值并使用php存储在数据库中
【发布时间】:2016-12-13 06:51:25
【问题描述】:

我想在MySQL 数据库中存储一组值。这里,grade 变量是一个数组,其中包含来自 html 选择元素的值。它目前不工作。这是我的 PHP 代码:

<?php
if (isset($_POST["sub"])) {
    $query = "UPDATE course_reg set grade=";
    $values = $_POST['grade'];
    $valuesArr = array();
    foreach ($values as $a){
        $valuesArr[] = mysql_real_escape_string($a);
        //$valuesArr[] = $a;
    }
    $query .= implode(',', $valuesArr);
    $grade_upp = mysqli_query($con,$query);
}
?>

【问题讨论】:

  • 用 html 代码更新你的代码
  • 您的查询不包含WHERE 子句并修改了course_reg 表中的所有行。

标签: php html forms mysqli


【解决方案1】:

你的字符串周围需要':

<?php
if (isset($_POST["sub"])) {
$query= "UPDATE course_reg set grade=";
$values = $_POST['grade'];
$valuesArr = array();
foreach ($values as $a){
$valuesArr[] = mysql_real_escape_string($a);
//$valuesArr[] = $a;
}
$query .= "'".implode(',', $valuesArr)."'";
$grade_upp=mysqli_query($con,$query);
}
?>

注意:停止使用 mysqli_query 而使用prepared statement。它不安全。

【讨论】:

    【解决方案2】:

    你到底想做什么?你的表结构是什么?您正在更新(=更改)数据库中的行。这是你想要的吗? Mysql 更新查询不能用于在同一个字段中设置多个值。从您的查询来看,这就是您正在做的事情。并且您的更新没有 where 条件。所以你总是会更新所有的行。

    if (isset($_POST["sub"])) {
        $query= "UPDATE course_reg set grade=";
        $values = $_POST['grade'];
    
        foreach ($values as $a){
        $valuesArr[] = mysql_real_escape_string($a);
    
        $grade_upp=mysqli_query($con,$query.mysql_real_escape_string($a));
        // if your values are strings, you need to put them into '
        // and you might want to add a WHERE clause to your update
    }
    

    顺便说一句,直接使用 POST 变量被认为是不安全的。看看准备好的语句 - 正如@FArzad 所述

    【讨论】:

    • 我想更新数据库中的值。我将
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2011-10-10
    相关资源
    最近更新 更多