简体   繁体   English

使用带有 PDO 的数组更新多个 MySQL 表

[英]Updating multiple MySQL table using arrays with PDO

Very similar to Updating multiple MySQL table columns using arrays with PDO .使用带有 PDO 的数组更新多个 MySQL 表列非常相似。

But I use a complex form using但我使用了一个复杂的形式

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

Updating just gives me a blank page with no errors???更新只是给我一个没有错误的空白页面???

NB: Was using MySQLi and was working fine, just updating to PDO.注意:正在使用 MySQLi 并且工作正常,只是更新到 PDO。

$data2 was returning a correct array. $data2 正在返回正确的数组。

Is this possibly an order thing?这可能是订单吗? IE Output has to match column order? IE 输出必须匹配列顺序?

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

*****UPDATED****** *****更新******

$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);

I think that this code can to help you我认为这段代码可以帮助你

        $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();
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM