#php #database #dynamic #foreach
#php #База данных #динамический #для каждого
Вопрос:
это может быть немного сложнее. Сначала вот моя функция:
public function transfer_smf_userinfo($username)
{
$sys_columns = implode(', ', $this->_config['bbauth']['columns']['sys']);
$smf_columns = implode(', ', $this->_config['bbauth']['columns']['smf']);
$question_marks;
for($i = 0; $i > sizeof($this->_config['bbauth']['columns']['sys']); $i )
{
if(sizeof($this->_config['bbauth']['columns']['sys']) == $i - 1)
{
$question_marks .'?';
}
else {
$question_marks .'?, ';
}
}
$user = $this->smf_db->query('SELECT '. $smf_columns .' FROM `smf_members` WHERE member_name = ? LIMIT 1', array($username));
if($user->num_rows > 0)
{
$user = $user->row_array();
$user['register_date'] = date('Y-m-d H:i:s', $user['register_date']);
$user['last_login'] = date('Y-m-d H:i:s', $user['last_login']);
$transfer_user = $this->sys_db->query('INSERT INTO `members` ('. $sys_columns .') VALUES ('. $question_marks .')', array());
if($transfer_user)
{
return true;
}
else {
return false;
}
}
else {
return false;
}
}
$sys_columns выводит:
идентификатор, имя пользователя, пароль, электронная почта, URL, аватар, b_date, r_date, l_date
$smf_columns выводит:
id_member, member_name, passwd, email_address, website_url, avatar, birthdate, date_registered, last_login
Мне нужен массив в конце строки запроса $transfer_user, чтобы иметь такой массив.
array($user['column'], $user['another']);
Но мне нужно делать это динамически с каждой строкой из $smf_columns.
Комментарии:
1. Вероятно, я мог бы переписать и оптимизировать это до половины текущего размера пожимает плечами Это вопрос или просьба? Что именно вы спрашиваете / запрашиваете?
2. Я знаю, что сейчас это не самое лучшее, я обычно кодирую его, а затем перекодирую, как только он заработает лучше. Просто мой способ сделать это. Но я понятия не имею, как выполнить эту часть. Мне просто нужно иметь возможность выполнять что-то вроде foreach внутри массива $ transfer_user с каждым столбцом из $smf_columns
3. Что-то вроде ` $transfer_user = $this-> sys_db->query(‘ВСТАВИТЬ В
members
(‘. $sys_columns .’) ЗНАЧЕНИЯ (‘. $question_marks .’)’, array( foreach($smf_columns как $column) { $user[$column] . } ));`4. Если это все, что вы хотите, проверьте мой ответ. Если что-то отличается, прокомментируйте, и я постараюсь исправить
Ответ №1:
Если я правильно понимаю проблему. Попробуйте:
$data=array();
foreach($this->_config['bbauth']['columns']['smf'] as $column)
$data[]=$user[$column];
$transfer_user = $this->sys_db->query(
'INSERT INTO `members` ('. $sys_columns .') VALUES ('. $question_marks .')',
$data);