【问题标题】:Updating multiple MySQL table using arrays with PDO使用带有 PDO 的数组更新多个 MySQL 表
【发布时间】:2018-12-31 23:18:48
【问题描述】:

非常类似于Updating multiple MySQL table columns using arrays with PDO

但我使用了复杂的形式

<input name="data[Name]" type="text" more stuff>

更新只是给我一个没有错误的空白页面???

注意:使用 MySQLi 并且工作正常,只是更新到 PDO。

$data2 返回了一个正确的数组。

这可能是订单吗? IE 输出必须匹配列顺序?

结合https://guwii.com/bytes/update-multiple-database-columns-using-pdo/分析了Updating multiple MySQL table columns using arrays with PDO

*****已更新******

$data = $_POST[data];

$data1 = array(ARRAY INFO HERE);

$data2 = array_merge($data, $data1);

function buildBindedQuery($fields){    
    end($fields);
    $lastField = key($fields);
    $bindString = ' ';
    foreach($fields as $field => $data2){
        $bindString .= $field . '=:' . $field;
        $bindString .= ($field === $lastField ? ' ' : ',');
    }

    return $bindString;                                             
}

$query = 'UPDATE details SET '.buildBindedQuery($data2).' WHERE id='.$_POST['id'].'';
$result = $conn->prepare($query);
$result->execute($data2);

【问题讨论】:

  • 多余的空格应该去掉;他们确实算你知道的。另外,您还有额外的引号需要删除。
  • 对sql注入也是开放的;为此使用准备好的语句。
  • 哇!!删除了空格并修复了额外的引号!!谢谢你。我现在将尝试使用表单数据和数组扩展我对 PDO 准备语句的了解
  • 欢迎,干杯
  • 另外,代码格式化对有很大帮助。我建议使用适当的缩进等来格式化您的代码。

标签: php post pdo


【解决方案1】:

我认为这段代码可以帮助你

        $data = $_POST['data'];

        $data1 = array ("Array info here");

        $data2 = array_merge($data, $data1);

        function buildBindedQuery($fields){
        end($fields);
        $lastField = key($fields);
        $bindString = ' ';
        foreach($fields as $field => $data2){
        $bindString .= $field . '=' . $field;
        $bindString .= ($field === $lastField ? ' ' : ',');
         }
         return $bindString;                                                
        }

        $servername = "localhost";
        $username = "";
        $password = '';
        $dbname = "";

        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
                        $password);

        $variable = buildBindedQuery($data2);
        $variable2 = explode(",", $variable);

        foreach($variable2 as $var) {
            $va = explode("=", $var);
            $query = "UPDATE usuario SET $va[0]='". $va[1] ."' WHERE id=2";

            $result = $conn->prepare($query);

            $result->execute();
        }

【讨论】:

  • 谢谢切斯特!!!玩得很快。虽然只显示了一个值。明天再去!
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多