Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用$qryUpdate在一条语句中更新两个表_Php_Mysql - Fatal编程技术网

Php 如何使用$qryUpdate在一条语句中更新两个表

Php 如何使用$qryUpdate在一条语句中更新两个表,php,mysql,Php,Mysql,在我的editclient.php(controller)中,我想用$qryUpdate同时更新数据库中的两个表,但我不知道该怎么做 我已经看过这个了,但我没法让它发挥作用 if (strtolower($_SESSION['role'])=='admin') { //$conn=bekend door include db.php in header $qryCreate="INSERT INTO USER (us

在我的
editclient.php
(controller)中,我想用
$qryUpdate
同时更新数据库中的两个表,但我不知道该怎么做

我已经看过这个了,但我没法让它发挥作用

if (strtolower($_SESSION['role'])=='admin')
    {
        //$conn=bekend door include db.php in header
        $qryCreate="INSERT INTO USER
                    (username, password, email, role_id)
                    VALUES('$nwUsername', '$nwPassword', '$nwEmail', '$nwRole')";
        //controleren of gebruiker al bestaat...
        if (getExistUsername($conn, $nwUsername))
        {
            echo "Gebruiker $nwUsername bestaat al, gebruiker wordt niet aangemaakt...<br>";
            header('refresh: 5; url=index.blade.php');
            exit;
        }
//query uitvoeren met error afhandeling
        if (mysqli_query($conn, $qryCreate))
        {

            echo "Gebruiker $nwUsername is aangemaakt!";
            header('refresh: 5; url=edit.blade.php?name='.$nwUsername.'&action=edit');
        }
        else
        {
            echo "Gebruiker $nwUsername is NIET aangemaakt!<br>
                      Geef deze foutmelding door aan uw beheerder: ".mysqli_error($conn);
            header('refresh: 5; url=index.blade.php');
        }

此时此刻,我有这样一个想法:

                $qryUpdate =<<<SQL
            BEGIN;
              UPDATE user
              SET username='$username', password='$password'
                WHERE username='$nwUsername';
              UPDATE client 
              SET name='$name', street='$street', number='$number', postalcode='$postalcode', location='$location', phonenumber='$phonenumber'
              WHERE user_id=' .$user_id. ';
              COMMIT;
            SQL;

             var_dump($nwUsername);
            //hieronder worden de gegevens opgeslagen....
            mysqli_query($conn, $qryUpdate);
            if (true) {
                echo "Gebruiker $nwUsername is aangepast naar $username!<br> 
                      Client $name is aangepast.<br> $qryUpdate";
            } //    header('refresh: 2; url=index.blade.php');

            else {
                echo "Wijzigingen zijn NIET doorgevoerd!<br>

        foutmelding: " . mysqli_error($conn) . "<br>Query:" . $qryUpdate;
            }
            }```

But the problem now is that i don't know how to close the query and that the echo shows the query with the correct values but, nothing changes in my database.

$qryUpdate=您可以使用PDO完成此操作。我在这里截断了您的查询,以说明代码的外观

$sql = <<<SQL
   START TRANSACTION;
   INSERT INTO user (...) VALUES (...);
   UPDATE client SET ... WHERE ...;
   COMMIT;
SQL;

$dsn = "mysql:dbname=dbname;host=127.0.0.1";
$username = "mysqluser";
$password = "mysqluser-secret-password";

$pdo = new PDO($dsn, $username, $password); // update for your server
$statement = $pdo->prepare($sql);
//
// bind the parameters to avoid SQL injection 
//
$statement->execute();

$sql=id建议您创建一个包含逻辑的存储过程…传入参数…并将其作为@Epodax的事务性副本运行,除非忽略
mysql\uuu
API的使用。答案:)@riggsfully当然,但是在mysqli或PDO中使用相同的代码相对容易:)嗯,即使在mysqli或PDO@Epodax中,在PHP中允许多个SQL查询听起来也非常危险。。这是自找麻烦。
$sql = <<<SQL
   START TRANSACTION;
   INSERT INTO user (...) VALUES (...);
   UPDATE client SET ... WHERE ...;
   COMMIT;
SQL;

$dsn = "mysql:dbname=dbname;host=127.0.0.1";
$username = "mysqluser";
$password = "mysqluser-secret-password";

$pdo = new PDO($dsn, $username, $password); // update for your server
$statement = $pdo->prepare($sql);
//
// bind the parameters to avoid SQL injection 
//
$statement->execute();