我正在使用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']从内连接中插入每一行。
答案 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'].'")';