如何使用INNER JOIN将数据插入第三个表?

时间:2017-02-10 17:06:16

标签: php mysql

我正在使用PHP在mySQL中的两个表上使用内连接,然后尝试将所有数据输入到第三个表但是收到T_STRING错误。我的三个表格是: mdl_user mdl_courses 电子邮件(第三个表格为空)。

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']从内连接中插入每一行。

1 个答案:

答案 0 :(得分:2)

首先,使用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'].'")';