从多个表插入数据的PHP查询
我有表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函数从多个表插入数据的PHP查询,php,mysql,Php,Mysql,我有表A(预测),由表B(设备)和表C(用户注册表)中的列组成。 每次新用户注册时,我都想将他们的用户名和表B中所有数据的数据一起添加到表a中 当我注册一个新用户时,它只将用户数据插入表a(预测)和表B(预测)的第一行 我想要达到的是;当新用户注册时,他们的用户名将与本季的赛程一起添加到“用户名”列中,因此,用户名将插入到每一赛程的每一行中: Pred|u ID | Fix|u ID |主队|主场|客场|客场|用户名 1-------1-------MANU-------7-------0---
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());
}
}
}
}
}
有点不清楚问题出在哪里。你能不能把你的问题编辑成实际输出和期望的输出?如果你想看一下,我已经更新了这个问题。问题出在哪里还不清楚。你们是否可以编辑你们的问题,以包括实际输出和期望输出?若你们想看一看,我已经更新了这个问题