关于Mysqli准备语句的基础知识 - PHP

时间:2017-02-14 09:04:12

标签: php mysql mysqli prepared-statement

嗨,我是准备好的陈述的新手,我想对它们了解一点。我有两个连接表,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']不是用户输入。因此,我也需要在这种情况下使用预准备语句,或者我的数据库也没有准备好的语句。

...谢谢

0 个答案:

没有答案