2015-11-16 48 views
0

我已经使用了其他线程提出的一些解决方案,但它只是不想工作。我的MYSQL版本是:5.5.38,这里是我使用的代码(目标是简单地连接到数据库)。该代码的推移,这就是为什么“{”不从,如果子句关闭,但应该连接到数据库的重要组成部分,如下表所示:简单地尝试连接数据库时,SQL语法错误(初学者)

$user = mysql_real_escape_string($_POST['user']); 
$password = ($_POST['password']); 

if ($_POST['user'] <> "" AND $_POST['password'] <> "") 
{ 
mysql_connect('localhost', 'xxx', 'xxx'); 
mysql_select_db('xxx'); 

$sql = "SELECT * AS user FROM xxx WHERE nutzer LIKE '$nutzer' AND pw LIKE '$password'" ; 

$result = mysql_query($sql); 
if (false === $result) { 
die (mysql_error()); 
} 

$datensatz = mysql_fetch_array($result, MYSQL_ASSOC); 

这些错误在问世之初权当我只需打开网站:

警告:mysql_real_escape_string():拒绝访问用户 '' @ 'localhost' 的(使用密码:NO)在/var/www/web1159/html/lehrer.php第15行

警告:mysql_real_escape_string():无法在/var/www/web1159/html/lehrer.php上建立到服务器的链接lin e 15

而这是我在尝试登录并连接到数据库时偶然发现的错误。我知道它说什么,但它对我没有多大意义 - 是“或”错误放置?我尝试了其他变化 - 仍然不起作用。为什么行1 ??:

您有在您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“AS用户从lehrerzugang WHERE nutzer LIKE'和PW LIKE‘LFB’”在1号线

+0

错误说明了一切:**拒绝访问用户“” @“localhost”的* *。您是否尝试从命令行连接到数据库?看起来你的数据库要么不可用,要么你的凭据不好。 Y我们的SQL也是错误的。据我所知MySQL不知道'AS'关键字。尝试以下'SELECT columnname user FROM xxx WHERE nutzer LIKE'$ nutzer'AND pw LIKE'$ password''其中columnname必须替换为您的实际列名称 – sengbatz

+0

首先,不推荐使用'mysql' php驱动程序;你应该使用'mysqli'或'PDO_mysql'。其次,在建立数据库连接之后,不能调用mysql_real_escape_string()。 –

+0

是否可以使用mysqli取决于您安装的是哪个版本的php,但它应该在5.3之后的任何php中默认可用。 –

回答

1

在拨打mysql_real_escape_string之前设置您的数据库连接

除了localhost的默认用户名和密码是'root'和空字符串'',因此除非您明确更改了这些凭据,否则您需要以root用户身份提供访问权限并使用空的密码。

mysql_connect('localhost', 'root', ''); 
mysql_select_db('yourDatabase'); 

如果您已经安装到数据库自己的用户访问,然后确保你提供了正确的凭据。

mysql现在在PHP中不推荐使用函数,并且有一个改进的MYSQL库支持数据库连接和分支mysqli,因此请使用它。

你不能给一个别名的所有列选择*所以SELECT * AS是无效的,别名可以提供给特定的列选择SELECT dateOfBirth AS DOB, dateCreated AS DC FROM yourTable

+0

mysqli是在PHP 5.0版本中引入的,因此,由于您有版本(5.5.38),因此您可以直接使用它组态。 – KAD

相关问题