【问题标题】:update sql foreign key automatically php自动更新sql外键php
【发布时间】: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-&gt;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


【解决方案1】:

是的,它现在可以工作了,我错过了这个

$stmt = $auth_user->runQuery("SELECT * FROM tbl_details WHERE user_id=:user_id");
$stmt->execute(array(":user_id"=>$user_id));

谢谢@sean 和@Darwin von Corax

【讨论】:

    猜你喜欢
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多