什么查询可以获得table1&的完整数据? table2使用table1有的外键吗?
我进入了table1
用户名 密码 person_id(外键)
在表2中
ID 名称 姓 地址
我需要像
这样的查询SELECT
pm.column1 AS pm_column1,
pm.column2 AS pm_column2,
....
p.*
FROM
...
(这是我不知道的部分)〜我知道这是一个非常不安全的查询
很抱歉noob问题,我使用mysqli函数和东西
答案 0 :(得分:0)
您要找的是JOIN
,特别是INNER JOIN
。 JOIN
的作用是根据某些条件将记录从一个表匹配到另一个表。所以你想要的是
SELECT
*
FROM
table1
INNER JOIN table2 ON table1.person_id = table2.id
WHERE
table1.username='$var'
AND table1.password = '$var';
请查看this网站,了解有关加入的说明。
答案 1 :(得分:0)
您正在将过多的PHP与SQL混合,并且您的查询使用过时的语法进行连接
您希望查询看起来更像这样
"SELECT *
FROM table1, table2
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username='$var'
AND table1.password = '$var'"
由于你将其标记为mysqli,如果你想将它与mysqli连接一起使用,你可以使用以下内容连接到你的数据库:
$dbc = new mysqli($host, $username, $password, $dbname);
if ($dbc->connect_error) {
die("Connection failed: " . $dbc->connect_error);
}
$query = "SELECT *
FROM table1, table2
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username='$var'
AND table1.password = '$var'";
然后像这样称呼它
$dbc->query($query);
您可以通过POST
(来自表单)或GET
变量来获取变量。
示例:
$var = $_POST['var'];
其中var
是HTML表单中的命名输入字段,例如
<input type="text" name="var" />
当然这只是一个开始。我希望我没有回答太多。
编辑:注意,如果您希望以更安全的方式执行此操作,请使用预准备语句执行相同的查询(使其成为两个变量):
$query = $dbc->("SELECT col1, col2
FROM table1, table2
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username=?
AND table1.password = ?");
$query->bind_param("ss",$var1,$var2);
$query->execute();
然后你可以调用select中的项目并将它们绑定到变量中,如下所示:
$query->bind_results($col1, $col2);
然后关闭查询
$query->close();
请注意"ss"
中的bind_param
指定两个变量都是字符串。如果它是一个整数,请使用i
(当然我还会继续):
要调用那些可以做的变量
while ($query->fetch()) {
echo $col1;
echo $col2;
}
但我离题了......