【问题标题】:Cannot save user ID to database无法将用户 ID 保存到数据库
【发布时间】:2013-04-08 21:10:33
【问题描述】:

在编码方面我几乎是一个新手,很抱歉这里缺乏知识。

我正在尝试从一个数据库表(用户的 ID 号)中检索一个外键属性,这样我就可以使 id 成为一个变量,用于将详细信息保存到另一个数据库表。

据此,我可以在用户登录时查看与该用户 ID 相关联的所有已保存记录。

我的问题是获取用户 ID 并将其作为变量保存到数据库中,但我似乎无法让它工作。如果我删除用户 ID,其余代码将起作用,但我需要将其保存到表中。

这是我的代码:

require_once( "dbconnect.php" );
try 
{
  $db = getConnection();    
  function get_id($db) 
  {   
    $username= $_SESSION['username'];
    $result = $db->query(
        "SELECT userID FROM users where username='$username'");
    return $result;
  }
  $uID = get_id($db); 

  $userID= $uID->setFetchMode(PDO::FETCH_NUM);
  $title = $Result->title;
  $desp = $Result->description;

  $sql = "INSERT INTO saved (userID, title, desp
          VALUES ('$userID', '$title', '$desp')";

【问题讨论】:

  • 当您查看您的代码时,尽管您是新手,但您认为如果使用 $uID->setFetchMode(PDO::FETCH_NUM);,变量 $userID(这似乎是您想要的)会发生什么?你打电话给setFetchMode,文档说它要么返回true,要么返回false。您需要的是真还是假,还是$userID 变量中的数字? :)
  • 我需要一个数字,当用户从 1+ 添加到数据库时会自动分配它们我目前有 5 个帐户,所以我有 1、2、3、4 或 5,但我只得到1
  • 那么您似乎在这里使用了错误的功能。您可能需要fetchColumn 吗?
  • 改成 $userID= $uID->setFetchMode(PDO::fetchColumn);并得到“未定义的类常量 'fetchColumn' in”

标签: php mysql insert pdo save


【解决方案1】:

尝试删除查询中 userid 变量周围的引号:

$sql = "INSERT INTO saved (userID, title, desp) VALUES ($userID, '$title', '$desp')";

【讨论】:

  • 嘿,谢谢,确实保存了,但是它只获取用户 ID 1,当我登录另一个帐户时说用户 ID 2 它仍然尝试保存 1。有什么建议吗?
  • 来自 N.B. 的 CFR 评论关于你的问题...+我的回答:-)
  • 阅读@N.B. 的评论是一个很好的建议。在你的问题下。
【解决方案2】:

正确的方法

function get_subid($db,$username) 
{   
    $stm = $db->prepare("SELECT userID FROM users where username=?");
    $stm->execute(array($username));
    return $stm->fetchColumn();
}
$userID = get_subid($db,$_SESSION['username']); 

【讨论】:

  • 这行得通,但是当我尝试保存另一个项目时,我遇到了“重复条目”的问题。这是sql数据库中的外键问题还是???
  • 你可能会问另一个问题,关于这个重复输入错误,提供尽可能多的相关信息。
【解决方案3】:

尝试以下方法:

require_once( "dbconnect.php" ); 
try { 
/** * ** connect using the getConnection function written in myfunctions.php ** */ $db = getConnection();

function get_subid($db) {
$username= $_SESSION['username']; //variable accessed through the function 
$query = $db->query("SELECT userID FROM users where username='$username'");

$row = $query->row(); //Get's the first Row
$result = $row->userID; //Get's the field userID of this first row
return $result; 
} 
$uID = get_subid($db);

            $title = $Result->title;
            $desp = $Result->description;

            // insert into database
$data = array(
  'userID' => $uID,
  'title' => $title,
  'desp' => $desp
);
$db->insert('saved', $data);

这应该是你想要的(见 cmets)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多