【发布时间】:2022-01-06 16:50:34
【问题描述】:
我目前正在尝试使用 sql 查询从表中最后插入的行中获取 id,并希望在另一个 sql 查询中使用此 id,我在其中更新电话号码,但真的无法得到这个去工作。 凭据工作正常,出于安全原因,我已将其删除。 很抱歉有任何错误,编程新手。
我的代码:
error_reporting(E_ALL);
ini_set('display_errors', 1);
$pdo = new PDO('mysql:host=;dbname=','','');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//insert data
$insertid = "SELECT id FROM dados ORDER BY id DESC LIMIT 1";//the first query where i get the id
if(isset($_POST['telefone'])){
$sql = $pdo->prepare("UPDATE dados SET telefone=? WHERE id = ($insertid) "); //where i wanted to use the id
$sql->execute(($_POST['telefone']));
// echo 'telefone inserido com sucesso';
}
?>
但我不断收到错误:警告:PDOStatement::execute() 期望参数 1 是数组,第 28 行给出的字符串 ($sql->execute(($_POST['telefone']));)
【问题讨论】:
-
旁注:不要使用字符串插值或连接将值获取到 SQL 查询中。这很容易出错,并且可能使您的程序容易受到 SQL 注入攻击。使用参数化查询。见"How to include a PHP variable inside a MySQL statement" 和"How can I prevent SQL injection in PHP?"。
-
与您得到的错误无关,但您可以在单个查询中简化代码:
UPDATE dados SET telefone=? ORDER BY id DESC LIMIT 1 -
感谢@forpas,这就是我想要的!