【问题标题】:How do I insert data into a third table using INNER JOIN?如何使用 INNER JOIN 将数据插入到第三个表中?
【发布时间】:2017-02-11 01:32:19
【问题描述】:

我正在使用 PHP 在 mySQL 中的两个表上使用内部联接,然后尝试将所有数据输入到第三个表中,但收到 T_STRING 错误。我的三个表是:mdl_usermdl_coursesemails(第三个表是空的)。

mdl_user

 id  auth  username  password  email  
 ============================================
 1   email thomas_90 #$(*#($SL tom@gmail.com  
 2   email john334   SDF*#EJEE john@gmail.com

mdl_courses

 id  userid  course
 ===================
 1   2     2
 2   11    2

电子邮件

 userid  course  username  email
 ===============================

我的php代码在这里:http://codepad.org/GBNqg1S7

<?php
$dbhost = 'm2697.sgded.com';
$dbuser = 'xxxxxxx';
$dbpass = 'xxxxxxx';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT userid, course, username, email 
        FROM mdl_courses
        INNER JOIN mdl_user
        ON mdl_courses.userid = mdl_user.id';


mysql_select_db('course_training');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{

$sql = 'INSERT INTO emails (userid, course, username, email) 
VALUES ($row['userid'], $row['course'], $row['username'], $row['email'])';


    echo "User ID:{$row['userid']}  <br> ".
         "Course: {$row['course']} <br> ".
         "Username: {$row['username']} <br> ".
         "Email: {$row['email']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

任何人都可以就我做错了什么提供一些见解吗?我想我可以使用 $row['variable'] 从内部连接中插入每一行。

【问题讨论】:

标签: php mysql


【解决方案1】:

首先,使用 PDO。你的代码还有很多问题,大部分问题都可以通过使用 PDO 来解决。

其次,您可以在 php 中使用 $row['blah'],但前提是字符串用双引号 " 括起来。在您的情况下,您可以简单地将多个值与您的字符串连接起来并完成它。

$sql = 'INSERT INTO emails (userid, course, username, email) 
VALUES ($row['userid'], $row['course'], $row['username'], $row['email'])';

不是有效的 php。

改成

$sql = 'INSERT INTO emails (userid, course, username, email) 
VALUES ("'.$row['userid'].'", "'.$row['course'].'", "'.$row['username'].'", "'.$row['email'].'")';

【讨论】:

  • 感谢您的回答。我将切换 PDO 以连接到数据库。至于插入表中,这些值没有显示在我的第三个空表中。还有其他我可能会错过的方法吗?
  • 你真的运行你的sql命令吗? mysql_query($sql,$conn);
  • 数据回显很好,但只是没有插入。我相信第 17 行运行良好。
  • 感谢您的帮助,mysql_query 运行良好!
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2012-08-17
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 2016-04-01
相关资源
最近更新 更多