我想我的手在PHP自定義函數,以精簡了很多東西我已經另有手動做。我對自定義函數很陌生,所以我不確定這些限制。現在,我試圖讓使用自定義函數庫MySQLi這裏的數據的代碼,然後我會解釋這個問題:自定義函數查詢
function connect_db($db = 'db_username') {
iconv_set_encoding("internal_encoding", "UTF-8");
mb_language('uni');
mb_internal_encoding('UTF-8');
@ $mysqli = new mysqli('host',$db,'password',$db);
if(mysqli_connect_errno())
{
die('connection error');
}
}
這一次似乎是工作的罰款。這是我遇到更多麻煩的下一個功能。
編輯:更新感謝Jeremy1026的響應
function do_query($db = 'default_db', $query) {
connect_db();
$result = $mysqli->query($query);
if(!$result){
trigger_error("data selection error");
}
while($row = $result->fetch_assoc()){
$result_array[] = $row;
}
return $result_array;
}
我的主人勢力的數據庫名和用戶名一樣的,所以如果數據庫名是「鮑勃」的用戶名來訪問這將是「鮑勃」因此,這就是爲什麼$db
在連接中出現兩次。
我遇到的問題是,這兩個功能是functions.php
從另一個頁面被調用。我希望能夠根據列名從其他頁面中的查詢中提取結果。但我也需要能夠與格式要做到這一點,這樣的話也許while()
循環必須發生的網頁上,而不是在一個函數?我想這是儘可能普及,無論頁面或數據的,這樣我就可以使用這兩個功能對於所有連接和我在競選現場的三個數據庫的所有查詢。
上帝,我希望我是清楚的。
大在此先感謝您的任何建議。我GOOGLE了這一點,但它很難找到,這不是使用過時的mysql_
前綴或任何實際上的方式,我可以使用返回數據什麼。
更新:訪問網頁時有問題,我現在得到以下錯誤:
致命錯誤:調用一個成員函數查詢()一個非對象在/功能。 PHP的`
與問題是$result = $mysqli->query($query);
行。我想這是因爲它認爲$query
是不確定的,但不應該是越來越被稱爲頁面的定義是什麼?這是該頁面的代碼:
$query = "SELECT * FROM `table`";
$myArray = do_query($db, $query);
echo $myArray['column_name'];
我得到'致命錯誤:不能使用[]讀取第31行的functions.php文件。這可能與我的PHP版本衝突嗎?我對這個錯誤進行了一些搜索,發現它可能不適合5.1之後的版本。或者我錯過了別的東西。 – Yhilan
對不起,我的錯。它應該是'return $ result_array;'。我編輯了我的答案。 – Jeremy1026
用你的代碼更新了這個問題(謝謝!)和我得到的新錯誤。 – Yhilan