仅在特定情况下使用控件结构显示窗体


display a form just in a particular case using control structure

我是PHP的初学者,我正在一个拼车网站上工作,我想仅在他没有进入他的车时才在用户帐户中显示一个表单这是我的代码,不幸的是它不起作用,我的屏幕上没有任何错误。如果可以的话,请帮助我!!

 <div id="edit-settings" class="tab-pane">
           <?php  $user_id=$_SESSION['user']['id'];
            $res = $db->query('SELECT COUNT(*) FROM car where $user_id');
                              $get_total = $res->fetchColumn();
                                 if($get_total==0){
                            echo 'please enter a car by filling the form below'; ?>

                                            <form action="car.php" method="post">
                                            <br />
                                    <label class="control-label" for="inputEmail">
            Brand * &nbsp;
        </label>
        <input class="span4" type="text" placeholder="Brand *" name="brand" maxlength="64" required="">
        <br />
    <br />  
        <label class="control-label" for="inputEmail">
            Model * &nbsp;
        </label>
        <input class="span4" type="text" placeholder="Model *" name="model" maxlength="64" required="">
        <br /><br />
        <label class="control-label" for="inputEmail">
            Confort * &nbsp;
        </label>
        <select id="lst_confort" class="span4" name="confort">
                <option value="Basique">Basic</option>
                <option value="Normal">Normal</option>
                <option value="Confortable">Confortable</option>
                <option value="Luxe">Luxary</option>
            </select>
            <br /><br />
        <label class="control-label" for="inputEmail">
            Color * &nbsp;
        </label>
        <select id="lst_confort" class="span4" name="couleur">
                <option value="0" selected> choose a color</option>     
             <option value="0"> white</option>                           
             <option value="1">black</option>
             <option value="2">blue</option>
             <option value="3"> Red</option>
             <option value="4"> Orange </option>
             <option value="5"> Green</option>
             <option value="6"> Yellow </option>
             </select> 
            <br /><br />
            <label class="control-label" for="inputEmail">
            Nb places * &nbsp;
        </label>
        <select name="places" id="lst_NbPlaces" class="span2" required="">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
            </select>
            <br />
    <br />

            <button type="submit" class="btn btn-success">
                Submit</button>
                <br />
                <br />
                <br />
                <label class="text-info">
                * required field
            </label>

        </form>
        <?php } else {
                  echo "You have already entered car !";
              }
        ?>

您的查询是错误的:

SELECT COUNT(*) FROM car where $user_id

这是在单引号中,因此它被解释为您在上面看到的; $user_id被视为文字文本,而不是变量。这不是一个有效的查询。我怀疑你的意思是这样的

$res = $db->query('SELECT COUNT(*) FROM car where user_id = ' . $user_id);

(根据需要更改user_id以匹配列名称。

请注意,这极易受到 SQL 注入的影响,因此对于实际使用完全不安全。

此外,将来,您可以尝试检查数据库错误和日志以确定出了什么问题。

查询存在语法错误:

        $res = $db->query('SELECT COUNT(*) FROM car where $user_id');
                                                         ^---

你没有可比性,所以实际上你在做

SELECT COUNT(*) ... WHERE true

并计算表中的所有记录。一旦您有一个用户进入汽车,所有用户都会被视为拥有汽车。也许你想要更像的东西

        $res = $db->query('SELECT COUNT(*) FROM car where user = $user_id');
                                                          ^^^^^^^