从多个表插入数据的PHP查询

从多个表插入数据的PHP查询,php,mysql,Php,Mysql,我有表A(预测),由表B(设备)和表C(用户注册表)中的列组成。 每次新用户注册时,我都想将他们的用户名和表B中所有数据的数据一起添加到表a中 当我注册一个新用户时,它只将用户数据插入表a(预测)和表B(预测)的第一行 我想要达到的是;当新用户注册时,他们的用户名将与本季的赛程一起添加到“用户名”列中,因此,用户名将插入到每一赛程的每一行中: Pred|u ID | Fix|u ID |主队|主场|客场|客场|用户名 1-------1-------MANU-------7-------0---

我有表A(预测),由表B(设备)和表C(用户注册表)中的列组成。 每次新用户注册时,我都想将他们的用户名和表B中所有数据的数据一起添加到表a中

当我注册一个新用户时,它只将用户数据插入表a(预测)和表B(预测)的第一行

我想要达到的是;当新用户注册时,他们的用户名将与本季的赛程一起添加到“用户名”列中,因此,用户名将插入到每一赛程的每一行中:

Pred|u ID | Fix|u ID |主队|主场|客场|客场|用户名

1-------1-------MANU-------7-------0-------B

2-------1-------美国男子--------5-------0-------兵工厂--------B

3------2------Chelsea------0------1------Leister------New.user

4-----------2------切尔西------0------3------莱斯特------新用户

使用insert函数

public function insert($table, $fields = array()) {

    $keys   = array_keys($fields);
    $values = '';
    $x      = 1;

    foreach ($fields as $field) {
        $values .= '?';
        if ($x < count($fields)) {

            $values .= ', ';
        } //are we at end of defined fields

        $x++;
    }


    $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})";

    if (!$this->query($sql, $fields)->error()) {
        return true;
    }


    return false;
}
register.php

<?php
require_once 'core/init.php';

include 'navbar.php';

$prediction = DB::getInstance()->query("SELECT * FROM fixtures");

if (!$prediction->count()) {
    echo 'No preds';
} else {  
    foreach ($prediction->results() as $row) {

        $row = get_object_vars($row);
        echo $row['Home_Team'], '<br>';

        if (Input::exists()) {
            if (Token::check(Input::get('token'))) {

                var_dump(Token::check(Input::get('token')));


                //echo 'I have been run'; 
                $validate   = new Validate();
                $validation = $validate->check($_POST, array(

                    'username' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 20,
                        'unique' => 'users'
                    ),
                    'password' => array(

                        'required' => true,
                        'min' => 6


                    ),
                    'password_again' => array(

                        'required' => true,
                        'matches' => 'password'
                    ),
                    'name' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 50
                    )

                ));

                if ($validation->passed()) {

                    //Session::flash('Success', 'You registered successfully!');
                    //header('Location: index.php');

                    $user = new User();
                    $salt = Hash::salt(32);

                    try {

                        $user->create(array(

                            'username' => Input::get('username'),
                            'password' => Hash::make(Input::get('password'), $salt),
                            'salt' => $salt,
                            'name' => Input::get('name'),
                            'joined' => date('Y-m-d H:i:s'),
                            'group' => 1   
                        ));

                        $user->updatePredTable(array(
                            'username' => Input::get('username'),
                            'fixture_ID' => $row['Fixture_ID'],
                            'date' => $row['Date'],
                            'home_Team' => $row['Home_Team'],
                            'away_Team' => $row['Away_Team']
                        ));

                        Session::flash('home', 'You have been registered you can now log in!');
                        //like:
                        //header('Location: index.php');

                        Redirect::to('index.php');  
                    }
                    catch (Exception $e) {
                        die($e->getMessage());
                    }
                    //echo 'Passed';
                } else {
                    foreach ($validation->errors() as $error) {
                        echo $error, '<br>';
                        //print_r($validation->errors());
                    }
                }
            }
        }
    }  
}


?>

我认为您需要查看在预测结果集上循环的位置。看起来您在第一次迭代时重定向到index.php,因此只添加了一行,请尝试在结果集上循环,如下所示

 <?php
require_once 'core/init.php';

include 'navbar.php';

$prediction = DB::getInstance()->query("SELECT * FROM fixtures");

if (!$prediction->count()) {
    echo 'No preds';
} else {  


        if (Input::exists()) {
            if (Token::check(Input::get('token'))) {

                var_dump(Token::check(Input::get('token')));


                //echo 'I have been run'; 
                $validate   = new Validate();
                $validation = $validate->check($_POST, array(

                    'username' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 20,
                        'unique' => 'users'
                    ),
                    'password' => array(

                        'required' => true,
                        'min' => 6


                    ),
                    'password_again' => array(

                        'required' => true,
                        'matches' => 'password'
                    ),
                    'name' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 50
                    )

                ));

                if ($validation->passed()) {

                    //Session::flash('Success', 'You registered successfully!');
                    //header('Location: index.php');

                    $user = new User();
                    $salt = Hash::salt(32);

                    try {

                        $user->create(array(

                            'username' => Input::get('username'),
                            'password' => Hash::make(Input::get('password'), $salt),
                            'salt' => $salt,
                            'name' => Input::get('name'),
                            'joined' => date('Y-m-d H:i:s'),
                            'group' => 1   
                        ));

foreach ($prediction->results() as $row) {

        $row = get_object_vars($row);
        echo $row['Home_Team'], '<br>';

                        $user->updatePredTable(array(
                            'username' => Input::get('username'),
                            'fixture_ID' => $row['Fixture_ID'],
                            'date' => $row['Date'],
                            'home_Team' => $row['Home_Team'],
                            'away_Team' => $row['Away_Team']
                        ));
}
                        Session::flash('home', 'You have been registered you can now log in!');
                        //like:
                        //header('Location: index.php');

                        Redirect::to('index.php');  
                    }
                    catch (Exception $e) {
                        die($e->getMessage());
                    }
                    //echo 'Passed';
                } else {
                    foreach ($validation->errors() as $error) {
                        echo $error, '<br>';
                        //print_r($validation->errors());
                    }
                }

        }
    }  
}

我认为您需要查看在预测结果集中循环的位置。看起来您在第一次迭代时重定向到index.php,因此只添加了一行,请尝试在结果集上循环,如下所示

 <?php
require_once 'core/init.php';

include 'navbar.php';

$prediction = DB::getInstance()->query("SELECT * FROM fixtures");

if (!$prediction->count()) {
    echo 'No preds';
} else {  


        if (Input::exists()) {
            if (Token::check(Input::get('token'))) {

                var_dump(Token::check(Input::get('token')));


                //echo 'I have been run'; 
                $validate   = new Validate();
                $validation = $validate->check($_POST, array(

                    'username' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 20,
                        'unique' => 'users'
                    ),
                    'password' => array(

                        'required' => true,
                        'min' => 6


                    ),
                    'password_again' => array(

                        'required' => true,
                        'matches' => 'password'
                    ),
                    'name' => array(

                        'required' => true,
                        'min' => 2,
                        'max' => 50
                    )

                ));

                if ($validation->passed()) {

                    //Session::flash('Success', 'You registered successfully!');
                    //header('Location: index.php');

                    $user = new User();
                    $salt = Hash::salt(32);

                    try {

                        $user->create(array(

                            'username' => Input::get('username'),
                            'password' => Hash::make(Input::get('password'), $salt),
                            'salt' => $salt,
                            'name' => Input::get('name'),
                            'joined' => date('Y-m-d H:i:s'),
                            'group' => 1   
                        ));

foreach ($prediction->results() as $row) {

        $row = get_object_vars($row);
        echo $row['Home_Team'], '<br>';

                        $user->updatePredTable(array(
                            'username' => Input::get('username'),
                            'fixture_ID' => $row['Fixture_ID'],
                            'date' => $row['Date'],
                            'home_Team' => $row['Home_Team'],
                            'away_Team' => $row['Away_Team']
                        ));
}
                        Session::flash('home', 'You have been registered you can now log in!');
                        //like:
                        //header('Location: index.php');

                        Redirect::to('index.php');  
                    }
                    catch (Exception $e) {
                        die($e->getMessage());
                    }
                    //echo 'Passed';
                } else {
                    foreach ($validation->errors() as $error) {
                        echo $error, '<br>';
                        //print_r($validation->errors());
                    }
                }

        }
    }  
}

有点不清楚问题出在哪里。你能不能把你的问题编辑成实际输出和期望的输出?如果你想看一下,我已经更新了这个问题。问题出在哪里还不清楚。你们是否可以编辑你们的问题,以包括实际输出和期望输出?若你们想看一看,我已经更新了这个问题