0

这就是我将其更改为的内容,仍然没有 - 没有错误,运行 $_POST 并且没有插入任何内容。

$sql = "INSERT INTO appts (trainer, date, time, name, phone, club, group_key) values (?, ?, ?, ?, ?, ?, ?)";
$q = $db->prepare($sql);
$q->execute(array($train, $_POST['date'], $time, $_POST['name'][$i], $_POST['phone'][$i], $club, $group_key));

我最近切换到 PDO,因为我终于升级了我的主机,我在尝试将多行插入到我的数据库中时遇到问题。如果有人能看到我做错了什么,将不胜感激!

代码试图做什么:形成客户端数量->循环生成一组等于刚输入的客户端数量的输入->将所有这些输入到数据库中(时间只放入第一个,其他时间留空)

if($action == 'group'){
echo "Number of clients: <form method='post'><input type='text' name='num' value='$_POST[num]'><input type='submit' value='Go' name='group'></form>";
if($_POST['group']){
    $num = $_POST['num'];
    ?>
    <form method='post'>
        <br>
        <table>
            <tr>
                <td>Time:</td>
                <td><input type='text' name='time'></td>
            </tr>
            <tr>
            <?
            if(!$trainer){

                $q = $db->prepare("SELECT name from trainers where club = '$club'");
                $q->execute();
                echo "<td>Trainer:</td> <td><select name='trainer'><option value=''></option>"; 
                while($row = $q->fetch()){
                    echo "<option value='$row[id]'>$row[name]</option>";
                }
                echo "</select></td>";
                }
            for($i = 1; $i < $_POST['num'] +1; $i++){
                echo "
                <tr>
                    <td>Name $i: </td>
                    <td><input type='text' name='name[]'>
                </tr>
                <tr>
                    <td>&nbsp; &nbsp; Phone:</td>
                    <td><input type='text' name='phone[]'></td>
                </tr>
                    <tr><td><br></td></tr>
                        ";
            } 
            ?>
        </table>
        <input type='submit' name='addgroup'>
    </form>
    <?
    if($_POST['addgroup']){
        $group_key = substr(md5(microtime()),rand(0,26),5);
        for($i = 0; $i < sizeof($_POST['name']); $i++){
            $time = '';
            if($i = 0){
                $time = $_POST['time'];
            }
            if($trainer){
                $train = $trainer;
            }
            else{
                $train = $_POST['trainer'];
            }
            $sql = "INSERT INTO appts SET trainer = ?, date = ?, time = ?, name = ?, phone = ?, club = ?, group_key = '$group_key'";
            $q = $db->prepare($sql);
            $q->execute(array($train, $_POST['date'], $time, $_POST['name'][$i], $_POST['phone'][$i], $club));
        }
    }
}
4

3 回答 3

1

您的插入查询看起来不正确。尝试以下操作:

$sql = "INSERT INTO appts (trainer, date, time, name, phone, club, group_key) values (?, ?, ?, ?, ?, ?, '$group_key')";

您还应该将传递给方法的$group_keyin移动。不知道你为什么把它放在里面,所以我把它留了下来。arrayexecute$sql

于 2013-08-15T18:26:58.017 回答
0

您的 SQL 查询不好。

INSERT INTO  appts (trainer, etc) VALUES (?,?)

或者

UPDATE appts SET trainer = ? WHERE something = ?
于 2013-08-15T18:26:57.147 回答
-1

我最终逐步重建打印结果,看看它在哪里破坏。我有if($i = 0)应该是if($i == 0)(duh)。总是小事。这是我最终使用的:

if($_POST['addgroup']){ 
    $group_key = substr(md5(microtime()),rand(0,26),5);
    if(!isset($_GET['trainer'])){
        $train = $_POST['trainer'];
    }
    else{
        $train = $_GET['trainer'];
    }
    for($i = 0; $i < count($_POST['name']); $i++){
        $time = '';
        if($i == 0){
            $time = $_POST['time'];
        }
        $data = array($train, $date, $time, $_POST['name'][$i], $_POST['phone'][$i], $club, $group_key);
        $sql = "INSERT INTO appts (trainer, date, time, name, phone, club, group_key) VALUES (?, ?, ?, ?, ?, ?, ?)";
        $q = $db->prepare($sql);
        $q->execute($data);

        echo "<pre>";
        print_r($data);
        echo "</pre>";  
    }

}
于 2013-08-16T13:06:25.003 回答