2017-09-29 10 views
-1

私はデータベースを1対多数の関係を持つ2つのテーブルで構成しました。ユーザーがデータベースに存在する場合、ユーザーIDを取得する方法はありますか?

最初のテーブル "data"は(name、phone、personid)の列を持ちます。

第2のテーブル「リンク」には(リンクID、リンク、個人ID)の列があります。

データテーブルに既に存在する人のリンクへの新しいリンクを挿入したいとします。

$statement = $connect->prepare("SELECT * FROM data WHERE name = :sname AND phone = :sphone"); 
$statement->execute(array('sname' => $name , 'sphone' => $phone)); 
$count = $statement->rowCount(); 


if($count > 0){  
$st = $connect->prepare("SELECT personid FROM data WHERE name = :sname AND phone = :sphone"); 
$id = $st->execute(array('sname' => $name , 'sphone' => $phone)); 

私は彼が彼のリンクに新しいリンクを挿入するためにそれを使用するために存在している場合、ユーザーID場合を取得したい、だから、どうやってIDを取得することができますか?

+0

を省略できます。明確にするために、関数が 'personid'を取得したい、または既存のデータをチェックするようにしますか? – Swellar

+0

PDOを使用する場合は、バインド名の前にコロンを付ける必要があります。 –

+0

私はすでにユーザーが存在するかどうかを確認した後、彼の名前と電話でIDを取得したいです。 – Danny

答えて

1

あなたが1つの列のみを期待している場合は、fetchColumn()を使用することができます。

$st = $connect->prepare("SELECT personid FROM data WHERE name = :sname AND phone = :sphone"); 
$st->execute(array('sname' => $name , 'sphone' => $phone)); 
$personID = $st->fetchColumn(); 

あなたは、単一の行のリターンを期待している場合にもfetch()を使用することができます。

$st = $connect->prepare("SELECT personid FROM data WHERE name = :sname AND phone = :sphone"); 
$st->execute(array('sname' => $name , 'sphone' => $phone)); 
$row= $st->fetch(PDO::FETCH_ASSOC); 
$personID = $row['personid']; 

$personIDは、データを保持する必要がありますpersonidクエリから返された列

注:接続でフェッチスタイルをすでに設定している場合、PDO::FETCH_ASSOC

関連する問題