无法将用户ID保存到数据库

时间:2013-04-16 12:46:51

标签: php mysql insert pdo save

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

我正在尝试从一个数据库表(用户的ID号)中检索一个forigne键属性,这样我就可以使 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')";

3 个答案:

答案 0 :(得分:1)

正确的方式

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']); 

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-1)

尝试以下方法:

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);

这应该是你想要的(见评论)