2014-02-23 191 views
0

這可能只是一個愚蠢的錯誤,但我無法連接到MySQL。 現在已經讓我煩惱了好幾天了!無法通過PHP連接到MySQL數據庫

我試圖創建一個網上商店教程正在做的數據庫。 這是通過Dreamweaver和cPanel完成的。 我試着從該代碼連接到我的MySQL數據庫:

----- ----- connect_my_sql.php

<?php 
$db_host = "hostip"; 
$db_username = "build"; 
$db_pass = "*****"; 
$db_name = "myonlinestore"; 
$myConnection = mysqli_connect("$db_host","$db_username","$db_pass", "$db_name") or die ("could not connect to mysql".mysql_error()); 
?> 

(密碼和主機IP改變) 其中username是連接到數據庫和psw是正確的。 我從.mysql_error()

我沒有得到任何錯誤所有這一切都在我的godaddy主域上的子文件夾中完成。

已嘗試做一個管理頁面,我無法連接到我的數據庫使用我在mysql中創建的日誌。 女巫是下面的代碼:

<?php 

session_start(); 
if (isset($_SESSION["manager"])) { 
    header("location: index.php"); 
    exit(); 
} 
?> 
<?php 

if (isset($_POST["username"]) && isset($_POST["password"])) { 

    $manager = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]); // filter everything but numbers and letters 
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]); // filter everything but numbers and letters 
    // Connect to the MySQL database 
    include "../storescripts/connect_to_mysql.php"; 
    $sql = mysql_query("SELECT id FROM admin WHERE username='$manager' AND password='$password' LIMIT 1"); // query the person 

    $existCount = mysql_num_rows($sql); // count the row nums 
    if ($existCount == 1) { // evaluate the count 
     while($row = mysql_fetch_array($sql)){ 
      $id = $row["id"]; 
     } 
     $_SESSION["id"] = $id; 
     $_SESSION["manager"] = $manager; 
     $_SESSION["password"] = $password; 
     header("location: index.php"); 
     exit(); 
    } else { 
     echo 'That information is incorrect, try again <a href="index.php">Click Here</a>'; 
     exit(); 
    } 
} 
?> 

(我刪除代碼中的所有造型)

和我得到的是該信息是不正確的,但我已經創造了一個管理表和用戶我數據庫。 但我不能登錄。

我從這得到的是,當試圖連接時有一些問題。 它必須從我的結尾becouse godaddy不能看到任何錯誤或我無法連接上有日誌。

如果你能幫我解決這個問題,我會非常感謝。

感謝

+0

mysql_query vs mysqli是2個單獨的東西。使用mysqli_query而不是mysql_query – Dorvalla

+0

只需對您的代碼發表評論。爲什麼你不允許在你的密碼特殊字符,我希望你的數據庫密碼長度超過5個字符。 – Devon

回答

4

因爲你mysqli API打開的連接,您無法連接到數據庫,並使用mysql_query,實際上屬於mysql API和不具有數據庫

$sql = mysql_query("SELECT id FROM admin WHERE username='$manager' AND password='$password' LIMIT 1"); // query the person 
     //^ here you use the wrong api 

任何連接後只需使用mysqli query命令更改此文件,learn more here

+0

沒有工作。仍然無法連接到MySQL。 – user3344435

0

頂層文件名爲'connect_my_sql.php' 正在包含的文件d是'connect_to_mysql.php';

此外,使用'require_once',因爲腳本需要該文件才能運行。

+0

我的錯誤,其兩個文件上的connect_to_mysql.php。 我應該在哪裏發表一次陳述? – user3344435

+0

將'include'替換爲'require',因爲'require與include相同,除非失敗時它還會產生致命的E_COMPILE_ERROR級錯誤。換句話說,它會停止腳本,而包含只發出警告(E_WARNING),允許腳本繼續。 'http://uk1.php.net/manual/en/function.require.php –

+0

謝謝!但仍然有我原來的問題。 – user3344435

0

此外什麼@DoctorDerp和@Fabio的答案,這是不對的太

$myConnection = mysqli_connect("$db_host","$db_username","$db_pass", "$db_name") or die ("could not connect to mysql".mysql_error()); 

刪除一切後,或者,再上線下添加if來測試像這樣的代碼,成爲連接像這樣

$myConnection = mysqli_connect("$db_host","$db_username","$db_pass", "$db_name"); 
if(!$myConnection){ 
    die("Cannot connect to database"); 
} 
0

我使用我創建的更簡單的登錄腳本。

$dbc=mysqli_connect("host","username","password","database") or die ("Error in Connecting to database"); 

$email=$_POST["idamuid"]; 
$password=$_POST['idamupassword']; 
$email=htmlspecialchars(mysql_escape_string($email)); 
$password=htmlspecialchars(mysql_escape_string($password)); 




    $query="select member_email from members where member_email='$email' 
    and member_password=sha('$password') "; 


    $result=mysqli_query($dbc,$query); 


    if(mysqli_num_rows($result)==1){ 
     session_start(); 
     $_SESSION['userid']=$email; 
    header("location:index.php"); 
    mysqli_close($dbc); 

    } 
    else{ 

      echo "Login Unsuccessful"; 
      echo '<p><a href="signin.php">Please Try Again</a></p>'; 
+0

與mysqli_real_escape_string相比,您仍然使用mysql_escape_string的舊mysql API,但是使用預準備語句執行此操作有更好的方法。 – Devon