我正在尝试使用的系统可以从前端更新数据库中的数据,该前端已经在输入中填充了它在数据库中找到的信息,这样您就可以看到现在的情况,然后进行输入新的价值观。
问题是当我返回诸如name,email,phone之类的值时,它可以正常工作。但是,当我尝试联接表时,对于城市,我将在输入字段中没有类似159的值,它是数据库中特定城市的关键值。
刹车打印此错误。
SQL错误
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous' in ....PATH TO FILE......: PDOStatement->execute(Array) #1 {main} thrown in .....PATH TO FILE....... on line 98
密码破损
在这里,您有在脚本的那部分运行的代码。
else {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT
Users.id,
Users.firstname,
Users.lastname,
Users.email,
Users.age,
Users.phone,
Universities.univ AS university,
Internship.internship_type AS Internship,
Orase.oras AS city,
Interes.interes AS interest,
User_status.user_status AS userstatus,
Users.filename,
Users.account,
Users.reg_date
FROM
Users
INNER JOIN
Orase ON Users.city = Orase.cheie
INNER JOIN
Universities ON Users.university = Universities.id
INNER JOIN
Interes ON Users.interest = Interes.cheie
INNER JOIN
Internship ON Users.Internship_type = Internship.cheie
INNER JOIN
User_status ON Users.user_status = User_status.id
WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($id));
$data = $q->fetch(PDO::FETCH_ASSOC);
$name = $data['firstname'];
$lastname = $data['lastname'];
$email = $data['email'];
$age = $data['age'];
$mobile = $data['phone'];
$city = $data['city'];
Database::disconnect();
}
实际有效的代码
另外,这是一个没有内部联接的脚本,因此我的城市返回一个数值。
else {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM Users where id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($id));
$data = $q->fetch(PDO::FETCH_ASSOC);
$name = $data['firstname'];
$lastname = $data['lastname'];
$email = $data['email'];
$age = $data['age'];
$mobile = $data['phone'];
$city = $data['city'];
Database::disconnect();
}
?>
使用工作代码的表单图像
用于上下文的图像,以便您了解为什么我要使用内部联接作为城市名称
最佳答案
只需将WHERE id = ?
替换为WHERE Users.id = ?
关于php - 使用内部联接将数据返回输入字段以进行更新操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39838397/