【发布时间】:2016-03-18 23:36:07
【问题描述】:
我无法让外键自行更新,约束设置为 phpmyadmin 中删除级联的更新级联。 我可以插入其他所有内容,只是外键 user_id 显示为 null 而不是更新为正确的 id。 我的错误在哪里? id 表id,我知道不需要放入sql语句中; user_id 是与 tbl_user 关联的外键
插入数据库代码
try
{
$dbh = new PDO("mysql:host=localhost;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt =$dbh->prepare( "INSERT INTO tbl_details (user_id, name,address,postcode)
VALUES(:user_id,:name,:address,:postcode)");
$stmt->bindParam(':user_id',$user_id);
$stmt->bindparam(':name', $name);
........
$stmt->execute();
$dbh = null;
}catch (PDOException $e) {
$dbh = null;
print "Error!: " . $e->getMessage() . "<br/>";
print "PHP Line Number: " . $e->getLine() . "<br/>";
print "PHP File: " . $e->getFile() . "<br/>";
die();
}
【问题讨论】:
-
$user_id设置在哪里? -
tbl_details user_id 是 tbl_users user_id 的外键
-
你是如何设置PHP变量
$user_id的? -
我了解
user_id,但我询问了您在$stmt->bindParam(':user_id',$user_id);中使用的php 变量$user_id。如果你没有在php中定义$user_id,那么它就是NULL,这就是为什么它被插入为NULL -
@Sean 谢谢你的帮助,对不起,我在这方面的经验很少。我没有在任何地方设置它,这就是为什么。我为设置变量所做的只是 if(isset($_POST['btn']) ){ $name = $_POST['name']; ...} 但不适用于 user_id。因为我认为我不需要从表单输入中物理插入 user_id,然后当我尝试显示数据时,只需使用连接表 sql 语句。
标签: php mysql foreign-keys