2015-11-16 50 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

相關問題