2013-05-31 45 views
1

我剛開始編寫我自己的腳本大約一小時前,我遇到了一個錯誤,我不確定如何解決,似乎一切正常解析除了用戶名,由於某種原因,當我執行我的PHP表創建腳本時,它不是從config.php解析用戶名,而是執行沒有用戶名的腳本。腳本沒有正確發送登錄信息

我把代碼通過phpcodechecker.com/,它給了我什麼都沒有,甚至沒有任何警告,它讓我真的很困惑,代碼對我來說看起來不錯,但我很新手,所以我'可能錯過了巨大的東西,任何幫助將不勝感激。

爲什麼這段代碼在嘗試連接時解析用戶名到createtable.php?

有問題的代碼片段; 方式堆棧格式的代碼塊混淆了地獄了我,所以我就用引擎收錄

config.php

createtable.php

+0

如果你在config.php中連接,你爲什麼要在createtable.php中重新連接? – MatthewMcGovern

+0

你提出了一個很好的觀點,刪除了它,但它仍然在輸出 無法選擇定義的數據庫:拒絕用戶''@'localhost'到數據庫'testdb' 這告訴我它仍然無法發送用戶名root到數據庫,我不明白爲什麼 –

+1

看看法比奧的答案,它應該解決問題。 – MatthewMcGovern

回答

1

這是因爲你混合mysqlimysql API中config.php它結了根本沒有連接

mysqli_connect($db_hostname, $db_username, $db_password) 

mysql_select_db($db_database) 

使用mysqli能夠正確連接數據庫(這很明顯Ÿ更好的使用,因爲mysql_*功能已被棄用)做這樣的事情:

$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db'); 

if ($mysqli->connect_errno) { 
    die('Connect Error: ' . $mysqli->connect_errno); 
} 

您可以檢查documentation here

我想補充一點,你可以使用簡單地要求它的任何其他腳本從config.php連接。

require('config.php'); 

所以你creatables.php看起來就像這樣

require("config.php"); 

$sql="CREATE TABLE quoter (
    id int NOT NULL AUTO_INCREMENT, 
    quote text NOT NULL, 
    quoteby CHAR(50) NOT NULL, 
    PIMARY KEY (id) 
    )"; 

if (mysqli_query($mysqli,$sql)) 
{ 
    echo "Table 'quoter' was created sucessfully"; 
} 
else 
{ 
    echo "Error creating table 'quoter': ".mysqli_error($mysqli); 
} 

和你config.php

$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db'); 

if ($mysqli->connect_errno) { 
    die('Connect Error: ' . $mysqli->connect_errno); 
} 

我想請你注意,$mysqli是參數至極手柄連接,所以你需要通過這一個在你的數據庫中執行操作時,例如

mysqli_query($mysqli,$sql); 
      //^here it is 
+0

謝謝法比奧,你的文章內容非常豐富,在閱讀完後我會重新啓動整個config.php文件,非常感謝你的來源/文檔,你是否有任何與createtable.php文件有關的大問題可以看到這將與config.php中的mysqli衝突嗎? –

+0

@BenF我已經更新了我的答案,讓你明白,請檢查它 – Fabio

+0

再次感謝Fabio,我仔細檢查了你發佈的所有內容,以便正確學習並做了一些小改動,但本質上你已經爲我工作: )我實際上正在考慮把它全部切換回MySQL,但是在你的幫助和參考資料中,MySQLi並不那麼令人生畏。 –