-2

在尝试将字符串发送到 SQL 数据库时,我正在慢慢地学习 PHP 和 SQL,并偶然发现了一个小错误。我要做的是将用户的详细信息插入一个表(当前有效)并将用户名与 5 个空白条目一起发送到另一个表中。表examscore 字段是username,exam,exam1,exam2,exam3,exam4(我现在需要空白的正是这些考试字段)。

问题是我收到以下消息: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\E-LearningWebsite\addcustomertodb.php 在第 11 行(从 $query1 开始的行)

如果可能的话,谁能解释这个错误的含义以及我做错了什么?

<?php
require "dbconn.php";

$username = $_GET['username'];
$email = $_GET['email'];
$pass = $_GET['password'];

$query = "INSERT INTO customer VALUES ('".$username."','".$email."','".$pass."')";

$query1 = "INSERT INTO examscores VALUES ('".$username."','""','""','""','""','""')";

$results = mysql_query($query) or die (mysql_error());

$results1 = mysql_query($query1) or die (mysql_error());

?>

亲切的问候安迪

4

4 回答 4

4

改变

$query1 = "INSERT INTO examscores VALUES ('".$username."','""','""','""','""','""')";

$query1 = "INSERT INTO examscores VALUES ('".$username."','','','','','')";

附言。您正在邀请 SQL 注入,但这是一个不同的故事......

于 2013-03-04T15:16:18.623 回答
2

护目镜!他们什么都不做!sql注入漏洞!这只是星期一!

为什么不只是

$query ="INSERT INTO customer VALUES ('$username', '$email', '$pass');";
$query1 = "INSERT INTO examscores VALUES ('$username', '', '', '', etc...);";

""PHP 会很乐意为您替换带引号的字符串中的$vars 。绝对不需要你正在做的所有连接。任何体面的代码编辑器仍会为您突出显示变量。

于 2013-03-04T15:17:34.037 回答
2

你缺少点来连接你的字符串

$query1 = "INSERT INTO examscores VALUES ('".$username."','"."','"."','"."','"."','"."')";

此外,您不需要有不同的字符串,而且如果您不插入它们,您也不需要包含每一列

于 2013-03-04T15:18:16.637 回答
1

导致错误的直接问题是双双引号之间的 query1 缺少.s (或者您应该完全删除双双引号。甚至是不需要的列......)。

但是您的代码中存在更大的问题:

  • SQL 注入:您的代码易受攻击。您至少应该逃避来自用户的变量...
  • mysql_* deprecation : 自 PHP 5.5 起,这些函数将被弃用。使用 Mysqli 甚至 ebtter PDO。
于 2013-03-04T15:17:46.317 回答