使用控制结构仅在特定情况下显示表单

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 *  
        </label>
        <input class="span4" type="text" placeholder="Brand *" name="brand" maxlength="64" required="">
        <br />
    <br />  
        <label class="control-label" for="inputEmail">
            Model *  
        </label>
        <input class="span4" type="text" placeholder="Model *" name="model" maxlength="64" required="">
        <br /><br />
        <label class="control-label" for="inputEmail">
            Confort *  
        </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 *  
        </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 *  
        </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

并且正在计算 table 中的所有记录。一旦您让一个用户进入汽车,所有用户都被视为拥有汽车。也许你想要更像

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