2017-04-14 81 views
-1

我是PHP + MySQL的新手,並且自己學習它。我遇到了一些問題(我想這可能非常簡單和愚蠢),但我無法修復它。好。我想從我的數據庫中選擇一些記錄:我使用該功能連接到數據庫:我對mysql數據庫的請求無法正常工作

function connect_bd() { 
    $result = new mysqli('localhost', 'root', '*****', 'book_kz'); 
    if (!$result) { 
     return false; 
    } else{ 
    $result->autocommit(TRUE); 
    return $result; 
} 
} 

它工作正常。然後我寫驗證功能:

function log_in($user_name, $passwrd) { 
// verification of user's name and password in database 
// if yes - return true 
// otherwise - false 

    // connect to database 
    $connect = connect_bd(); 
    if (!$connect) { 
    return 0; 
    } 

    // verification procedure 
    $result = $connect->query("select * from admin 
         where user_name='".$user_name."' 
         and passwrd = sha1('".$passwrd."')"); 

    if (!$result) { 
    echo "Incorrect password!".$connect->mysqli_errno; 
// return to logging in menu 
create_html_url("logo_in.php", "Return to logging menu"); 
return 0; 
    } 

    if ($result->num_rows>0) { 

    return 1; 
    } else { 

    return 0; 
    } 
$connect->close(); 
} 

它不起作用。特別是$ connect-> query有問題。 我把查詢"select * from admin where user_name =...."直接進入MYSQL環境 - 它工作正常。但是$result = $connect->query("select...什麼也沒有顯示。我插入了下一個命令echo "</br> print something</br>";echo "</br>print something".$result."</br>";。第一個命令顯示我字符串print something,下一個顯示什麼都沒有!這看起來像$結果塊打印失敗。我檢查了一些關於mysqli :: query的示例,但沒有發現任何錯誤。任何人願意幫助我,我將非常感激。預先感謝您......

+0

'$ result'不能直接打印,它不是一個簡單的價值。除了不正確地嘗試*打印*之外,還有其他跡象表明這實際上是失敗的嗎? – David

+0

這不是打印問題。我無法打印,因爲命令$ connect-> query無法正常工作。 –

+0

你有什麼跡象表明它不能正常工作?根據你的問題,該指示是你試圖打印查詢結果。該測試是無效的,所以並不表示任何實際問題。如果您有其他*有關問題的有用信息,包括該信息將會很有幫助。 – David

回答

0

當您調用一個類構造函數與new它基本上總是會返回一個類。所以這段代碼是錯誤的:

$result = new mysqli('localhost', 'root', '*****', 'book_kz'); 
if (!$result) echo "Oh, there's an error!"; 

而是做:

$mysqli = new mysqli('localhost', 'root', '*****', 'book_kz'); 

// a connect_errno exists so the connection attempt failed! 
if ($mysqli->connect_errno) { 
    echo "Error: Failed to make a MySQL connection, here is why: \n"; 
    echo "Errno: " . $mysqli->connect_errno . "\n"; 
    echo "Error: " . $mysqli->connect_error . "\n"; 
    exit; 
} 
+0

不要直接向瀏覽器輸出錯誤消息 –

+0

我沒有與構造函數new(msqli)和連接號與打印沒有問題。我遇到了執行命令的問題:$ result = $ connect-> query(「select * from admin ...它不返回數據庫記錄... –

+0

@George:我只是想在代碼中指出我們的問題。顯然這是問題,即使你不認爲它是這樣的,「你的常識」是對的,當然,你應該在內部處理真正的錯誤,並向訪問者顯示一條消息,如「出錯了。 「 –