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