PDO插入语句未执行

时间:2013-01-02 15:20:27

标签: php mysql pdo html-table isset

我有一个名为waiting.php的页面,这个页面是在辅导员和学生之间开始真实生活会话的门户。我有一个名为“name ='submit'

的提交按钮

我有一段代码要求提交按钮为(isset)一旦发生,然后我希望PDO语句执行插入查询。但是,我检查phpmyadmin,没有插入任何内容。

我的代码如下:

f(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (counselorname) VALUES (:counselorname)");
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

现在这是制作提交按钮的实际代码和辅导员姓名的下拉菜单:

echo "<td> 
                <form method= 'post'>
                    </form><select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select> 
                </form>";

echo "<td> <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
            <input type='submit' name='submit' value='Start Session'>
            </form> </td>";

我是PHP的新手,所以我的逻辑是一些,但我的语法和知道如何实现我的逻辑低于平均水平。

非常感谢任何帮助。

编辑:

这就是页面的外观:

Waiting.php

编辑2:

echo "<td> 
            <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
                    <select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select> 

            <td> <input type='submit' name='submit' value='Start Session'>
            </form> </td>";
}

  echo "</tr>";
  echo "</table>";

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (id, counselorname) VALUES (:id, :counselorname)");
    $query = $dbh->bindParam(':id', $row['id']);
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

3 个答案:

答案 0 :(得分:1)

您的加价存在缺陷。您的$ query语句需要namedrop,但此选择列表不是与提交按钮相同的表单。

您的代码显示了3种不同的形式,而且没有一种形式完整。

<form method="post" action="..." target="_new">
    -- All components and elements must be declared inside this node
</form>

答案 1 :(得分:0)

您可以直接添加绑定数组到execute语句:

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (counselorname) VALUES (:counselorname)");
    $query->execute(array(':counselorname', $_POST['namedrop']));
}

答案 2 :(得分:0)

问题是:action =“counselor.php?id =”。 $ row ['id']。 “

意味着插入脚本应该发送到counselor.php页面。为什么它不是拍摄错误的原因是我告诉它的工作是接受不是我想要的方式。

第二个问题是表单必须在method = post中,如果不是ID将插入但不是名称。所以解决这个问题:

echo "
        <td>    <form action='counselor.php?id=" . $row['id'] . "' method='post' target='_new'>
                    <select name='namedrop'>
                        <option value=''>Counselor Name</option> 
                        <option value='dmin-John'>Admin - John</option>
                        <option value='Admin-Christine'>Admin - Christine</option>
                        <option value='Admin-Dawne'>Admin - Dawne</option>
                        <option value='Counselor-Cherie'>Counselor - Cherie</option>
                        <option value='Counselor-Tootie'>Counselor - Tootie</option>
                        <option value='Counselor-Debbie'>Counselor - Debbi</option>
                        <option value='FrontDesk-Delores'>Front Desk - Delores</option>
                        <option value='FrontDesk-Kiana'>Front Desk - Kiana</option>
                    </select>
            </td>

            <td> <input type='submit' name='submit' value='Start Session'></td>
            </form> </td>";

然后在我的counselor.php上,我进行了一项测试,检查我是否得到了任何东西:

$id = $_GET['id'];
echo "$id";

$name = $_POST['namedrop'];
echo "$name";

check

然后我所做的只是运行查询:

if(isset($_POST['submit'])){
    $query = $dbh->prepare("INSERT INTO counselors (id, counselorname) VALUES (:id, :counselorname)");
    $query->bindParam(':id', $_GET['id']);
    $query->bindParam(':counselorname', $_POST['namedrop']);
    $query->execute();
    }

然后是完成的结果:

finish