Php 从从会话用户名派生的外键ID获取ID和行
我试图获得一个ID和一个名为info的行,以显示用户名为基础 我有一个用户表:Php 从从会话用户名派生的外键ID获取ID和行,php,sqlite,Php,Sqlite,我试图获得一个ID和一个名为info的行,以显示用户名为基础 我有一个用户表: TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL 以及一个用户ID为FK的infos表: TABLE infos ( infoid INTEGE
TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL,
username TEXT NOT NULL
UNIQUE,
password TEXT NOT NULL
以及一个用户ID为FK的infos表:
TABLE infos (
infoid INTEGER NOT NULL
PRIMARY KEY AUTOINCREMENT,
info TEXT NOT NULL,
productid INTEGER REFERENCES product (productid)
NOT NULL,
userid INTEGER REFERENCES users (id)
NOT NULL
我已设法从会话中获取用户名和用户名:
// get username
$name = $_SESSION['username'];
$stmt = $db->prepare("SELECT id FROM users WHERE username = :name");
$stmt->execute(["name" => $name]);
$r = $stmt->fetch();
// get userid
$stmnt2 = $db->prepare("SELECT info FROM infos WHERE userid = :r");
$stmnt2->execute(["r" => $r['id']]);
我正在努力获取所有的信息id和基于用户id的信息。我已经设法获得了信息,但它错过了第一个条目,我无法获得信息ID
// get info based on userid
if ($info = $stmnt2->fetch()) {
echo '<p>Your Info:</p>';
while ($info = $stmnt2->fetch()) {
echo "$info[info] </br>";
}
} else {
echo "<p>No Info</p>";
//根据用户ID获取信息
如果($info=$stmnt2->fetch()){
回显“您的信息:”;
而($info=$stmnt2->fetch()){
回显“$info[info]”;
}
}否则{
回声“无信息””;
有人能告诉我如何获得infoid和显示信息吗?谢谢。替换
// get userid
$stmnt2 = $db->prepare("SELECT info FROM infos WHERE userid = :r");
$stmnt2->execute(["r" => $r['id']]);
与
替换
// get info based on userid
if ($info = $stmnt2->fetch()) {
echo '<p>Your Info:</p>';
while ($info = $stmnt2->fetch()) {
echo "$info[info] </br>";
}
} else {
echo "<p>No Info</p>";
}
//根据用户ID获取信息
如果($info=$stmnt2->fetch()){
回显“您的信息:”;
而($info=$stmnt2->fetch()){
回显“$info[info]”;
}
}否则{
回声“无信息””;
}
与
//根据用户ID获取信息
如果($info=$stmnt2->fetch()){
回显“您的信息:”;
做{
echo“$info[info]”;//信息id包含在$info['id'中
}而($info=$stmnt2->fetch());
}否则{
回声“无信息””;
}
或
//根据用户ID获取信息
如果($stmnt2->num_rows()){
回显“您的信息:”;
而($info=$stmnt2->fetch()){
echo“$info[info]”;//信息id包含在$info['id'中
}
}否则{
回声“无信息””;
}
我建议您使用第二种方法。请不要犹豫,向我询问任何解释。谢谢,它正在工作。另外,我正在使用sqlite,因此num_rows将是fetch
->num_rows()
是查询返回的行数,但->fetch()
提供查询中的行,不确定是否真的是行,但我不确定SQLLitenum_rows()对我不起作用,因为我使用PDO,并且当我使用rowCount(我认为是它的替代方法)时,我会得到输出“No Info”。因此,我坚持使用第一行,因为它可以工作OK,这也是我以两种方式发布的原因
// get info based on userid
if ($info = $stmnt2->fetch()) {
echo '<p>Your Info:</p>';
while ($info = $stmnt2->fetch()) {
echo "$info[info] </br>";
}
} else {
echo "<p>No Info</p>";
}
// get info based on userid
if ($info = $stmnt2->fetch()) {
echo '<p>Your Info:</p>';
do {
echo "$info[info] </br>"; //The info id is contained in the $info['id']
} while ($info = $stmnt2->fetch());
} else {
echo "<p>No Info</p>";
}
// get info based on userid
if ($stmnt2->num_rows()) {
echo '<p>Your Info:</p>';
while ($info = $stmnt2->fetch()){
echo "$info[info] </br>"; //The info id is contained in the $info['id']
}
} else {
echo "<p>No Info</p>";
}