嗨,我是准备好的陈述的新手,我想对它们了解一点。我有两个连接表,Table1的catid用作表2中的id。这是两个表。
表1:
Id(int) catid(int) cat(varchar) subc(varchar)
1 161 Venue Hotel
2 162 Venue Hotel
3 163 Venue Banquet
4 164 Accomodation Farms
5 165 Accomodation Farms
6 166 Venue Resort
表2。
Id(int) name(varchar) area(varchar)
161 Abc Mall Road
162 Bcd Fountain Chowk
163 Def Chandni Chowk
164 Efg Chrol Bagh
165 Fgh Mall Road
166 Ghi Mall Road
假设我有这样的网址
www.example.com/list.php?cat=Hotels
我做的是首先检查表1的cat字段或Table1的子字段中是否包含cat值。我现在使用准备好的陈述来检查。
if ($stmt = $mysqli->prepare("SELECT * FROM Table1 WHERE cat= ?")) {
$stmt->bind_param("s", $_GET['cat']);
$stmt->execute();
$res = $stmt->get_result();
if($row = mysqli_fetch_array($res)){
$_SESSION['cname']=$row['cat'];
$_SESSION['variable']='cat';
}
$stmt->close();
}
if ($stmt = $mysqli->prepare("SELECT * FROM Table1 WHERE subc= ?")) {
$stmt->bind_param("s", $_GET['cat']);
$stmt->execute();
$res = $stmt->get_result();
if($row = mysqli_fetch_array($res)){
$_SESSION['cname']=$row['subc'];
$_SESSION['variable']='subc';
}
$stmt->close();
}
现在我将对 $ _ SESSION ['cname'] 进行所有查询。是否需要为我进一步使用准备好的陈述。
例如,我必须从Table2获取名称 cat = Venue 。现在我将进行类似
的查询SELECT name FROM Table1, Table2 WHERE Table1.catid=Table2.id AND Table1.cat='$_SESSION[cname]';
现在上面的查询$ _SESSION ['cname']不是用户输入。因此,我也需要在这种情况下使用预准备语句,或者我的数据库也没有准备好的语句。
...谢谢