ExtJS/PHP/MySQL: Uncaught SyntaxError: Unexpected token ILLEGAL
ExtJS/PHP/MySQL: Uncaught SyntaxError: Unexpected token ILLEGAL
我想弄清楚为什么下面的 $sql 回显语句会在 JavaScript 中抛出这个错误。它来自 $sql 赋值语句吗?为什么会这样?我只是 运行 阅读了 PHP 中编写的一些书籍示例。
Uncaught SyntaxError: Unexpected token ILLEGAL
<?php
session_start();
if (isset($_POST["exec"]) && $_POST["exec"] == "1") {
$url = "127.0.0.1";
$user = "root";
$pass = "root";
$db = "book1";
$message = "1";
echo "<script type='text/javascript'>alert('$message');</script>";
$link = mysql_connect($url, $user, $pass) or die("cannot connect.");
$sdb = mysql_select_db($db, $link) or die("faild select db");
$message = "2";
echo "<script type='text/javascript'>alert('$message');</script>";
$sql = implode("\n", array(
"SELECT",
" COUNT(id) as auth,",
" book1.users.email,",
" book1.users.firstname,",
" book1.users.lastname",
"FROM",
" book1.users",
"WHERE",
" book1.users.email = 'k'",
"AND",
" book1.users.passwd = SHA1(MD5('k'))",
"AND",
" book1.users.status = 1;"
));
echo "<script type='text/javascript'>alert('$sql');</script>";
$result = mysql_query($sql, $link) or die("faild query<hr/>SQL:" . $sql);
$row = mysql_fetch_assoc($result);
$auth = $row["auth"];
mysql_free_result($result);
mysql_close($link) or die("faild disconnect");
if ($auth == "1") {
$_SESSION["USERINFO"] = array(
"email" => $row["email"],
"firstname" => $row["firstname"],
"lastname" => $row["lastname"]
);
header("Location: ./index.php");
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="login.php" method="post">
E-Mail:<input type="text" name="email" value=""/><br/>
Password:<input type=password" name="passwd" value="" /><br/>
<input type="submit" value="Login"/>
<input type="hidden" name="exec" value="1"/>
</form>
</body>
</html>
编辑:
这是代码过去的样子,但在浏览器控制台中抛出了同样的错误 window。
$sql = implode("\n", array(
"SELECT",
" COUNT(id) as auth,",
" users.email,",
" users.firstname,",
" users.lastname",
"FROM",
" users",
"WHERE",
" users.email = '" . mysql_real_escape_string($_POST['email']) . "'",
"AND",
" users.passwd = SHA1(MD5('" . mysql_real_escape_string($_POST['passwd']) . "'))",
"AND",
" users.status = 1;"
));
看来作者忘记了输入字段中类型属性值 ("password") 前的引号。我可能是唯一一个用 packtpub.com 上出版的书 "Ext JS Data-driven Application Design" 的真实代码尝试过这个例子的人。这让我觉得很特别。
我创建了一个名为 "book1" 的模式(PHP $db 变量 - MySQL 模式类似于数据库),并将数据库凭据更改为 root/root与我在 Windows 上安装的 MySQL 的设置相匹配的代码。然后我必须将状态为 1 的用户添加到 "users" table 才能正常工作。
也许在 MySQL 上为我使用的版本 (6.3) 编写脚本是不同的,但是在创建 table 时语法也一直失败。我不得不忽略除 CREATE 语句之外的所有行。我还排除了以 "ENGINE" 开头的代码。
第 1 章的原始代码:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL,
`passwd` char(40) NOT NULL,
`lastname` varchar(20) NOT NULL,
`firstname` varchar(20) NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
新密码:
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL,
`passwd` char(40) NOT NULL,
`lastname` varchar(20) NOT NULL,
`firstname` varchar(20) NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
);
我想弄清楚为什么下面的 $sql 回显语句会在 JavaScript 中抛出这个错误。它来自 $sql 赋值语句吗?为什么会这样?我只是 运行 阅读了 PHP 中编写的一些书籍示例。
Uncaught SyntaxError: Unexpected token ILLEGAL
<?php
session_start();
if (isset($_POST["exec"]) && $_POST["exec"] == "1") {
$url = "127.0.0.1";
$user = "root";
$pass = "root";
$db = "book1";
$message = "1";
echo "<script type='text/javascript'>alert('$message');</script>";
$link = mysql_connect($url, $user, $pass) or die("cannot connect.");
$sdb = mysql_select_db($db, $link) or die("faild select db");
$message = "2";
echo "<script type='text/javascript'>alert('$message');</script>";
$sql = implode("\n", array(
"SELECT",
" COUNT(id) as auth,",
" book1.users.email,",
" book1.users.firstname,",
" book1.users.lastname",
"FROM",
" book1.users",
"WHERE",
" book1.users.email = 'k'",
"AND",
" book1.users.passwd = SHA1(MD5('k'))",
"AND",
" book1.users.status = 1;"
));
echo "<script type='text/javascript'>alert('$sql');</script>";
$result = mysql_query($sql, $link) or die("faild query<hr/>SQL:" . $sql);
$row = mysql_fetch_assoc($result);
$auth = $row["auth"];
mysql_free_result($result);
mysql_close($link) or die("faild disconnect");
if ($auth == "1") {
$_SESSION["USERINFO"] = array(
"email" => $row["email"],
"firstname" => $row["firstname"],
"lastname" => $row["lastname"]
);
header("Location: ./index.php");
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="login.php" method="post">
E-Mail:<input type="text" name="email" value=""/><br/>
Password:<input type=password" name="passwd" value="" /><br/>
<input type="submit" value="Login"/>
<input type="hidden" name="exec" value="1"/>
</form>
</body>
</html>
编辑:
这是代码过去的样子,但在浏览器控制台中抛出了同样的错误 window。
$sql = implode("\n", array(
"SELECT",
" COUNT(id) as auth,",
" users.email,",
" users.firstname,",
" users.lastname",
"FROM",
" users",
"WHERE",
" users.email = '" . mysql_real_escape_string($_POST['email']) . "'",
"AND",
" users.passwd = SHA1(MD5('" . mysql_real_escape_string($_POST['passwd']) . "'))",
"AND",
" users.status = 1;"
));
看来作者忘记了输入字段中类型属性值 ("password") 前的引号。我可能是唯一一个用 packtpub.com 上出版的书 "Ext JS Data-driven Application Design" 的真实代码尝试过这个例子的人。这让我觉得很特别。
我创建了一个名为 "book1" 的模式(PHP $db 变量 - MySQL 模式类似于数据库),并将数据库凭据更改为 root/root与我在 Windows 上安装的 MySQL 的设置相匹配的代码。然后我必须将状态为 1 的用户添加到 "users" table 才能正常工作。
也许在 MySQL 上为我使用的版本 (6.3) 编写脚本是不同的,但是在创建 table 时语法也一直失败。我不得不忽略除 CREATE 语句之外的所有行。我还排除了以 "ENGINE" 开头的代码。
第 1 章的原始代码:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL,
`passwd` char(40) NOT NULL,
`lastname` varchar(20) NOT NULL,
`firstname` varchar(20) NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
新密码:
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL,
`passwd` char(40) NOT NULL,
`lastname` varchar(20) NOT NULL,
`firstname` varchar(20) NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
);