2012-09-01 188 views
0

我遇到了mysqli和準備好的語句問題。我剛開始學習的mysqli一個小時,我有麻煩不理解爲什麼我得到這兩個錯誤:未聲明的變量mysqli

Notice: Undefined variable: mysqli in /opt/lampp/htdocs/lr/testingi.php on line 17 

Fatal error: Call to a member function prepare() on a non-object in /opt/lampp/htdocs 

/lr/testingi.php on line 17 

我有一個包含數據庫連接文件。這裏是。

$mysqli = new mysqli("localhost", "user", "password", "db"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 

這是重現錯誤的測試文件。

session_start(); 

require_once 'core/database/connect.php'; 

function user_id_from_username ($username) { 

if ($stmt = $mysqli->prepare("SELECT `user_id` FROM `users` WHERE `username` = ?")) 

$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($user_id); 
echo $user_id; 
$stmt->close(); 
} 

$username = 'Jason';   

user_id_from_username ($username); 

回答

4

你看上去不及格$mysqliuser_id_from_username功能。

2個快速選項:

1.全球

function user_id_from_username ($username) { 
global $mysqli; 
if ($stmt = $mysqli->prepare("SELECT `user_id` FROM `users` WHERE `username` = ?")) 

$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($user_id); 
echo $user_id; 
$stmt->close(); 
} 

2.第二個參數

function user_id_from_username ($mysqli, $username) {//..} 

user_id_from_username($mysqli, $username); 
+0

我聽說做一個變量全球是危險的?第二種選擇會更好嗎? – jason328

+2

我肯定會爲參數投票!一個OO選項可以是一個帶有'$ mysqli'的類作爲實例參數,這個參數甚至可以更好的IMO,w/e浮起你的船,就像他們說的那樣。 – quickshiftin