2015-06-07 120 views
1

我使用Dreamweaver生成連接到數據庫的PHP和SQLi代碼。這是我已經成功完成,但我不斷收到以下錯誤:如何使用Dreamweaver中的PHP和MySQLi將網頁連接到數據庫

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp\www\Maseno\Site\Template.php on line 32 

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\wamp\www\Maseno\Site\Template.php on line 34 

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp\www\Maseno\Site\Template.php on line 34, 

這裏是我的源代碼:

<?php require_once('../../Connections/connect.php'); ?> 
<?php 

if (!function_exists("GetSQLValueString")) { 
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", 
          $theNotDefinedValue = "") { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 

    $theValue = function_exists("mysql_real_escape_string") ? 
     mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
     case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
     case "long": 
     case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
     case "double": 
     $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; 
     break; 
     case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
     case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
    } 
} 

mysqli_select_db($database_connect, $connect); 
$query_Users = "SELECT * FROM students"; 
$Users = mysqli_query($query_Users, $connect) or die(mysqli_error()); 
$row_Users = mysqli_fetch_assoc($Users); 
$totalRows_Users = mysqli_num_rows($Users); 

?> 

回答

2

你沒有發佈部分數據庫,但是當您使用mysqli_connect()進行連接時,該函數將返回一個mysqli對象(或失敗時爲false)。如果您使用的是過程式樣式,那麼必須將該對象作爲參數傳遞給大多數MySQLi函數。

在此代碼:

mysqli_select_db($database_connect, $connect); 
$query_Users = "SELECT * FROM students"; 
$Users = mysqli_query($query_Users, $connect) or die(mysqli_error()); 
$row_Users = mysqli_fetch_assoc($Users); 
$totalRows_Users = mysqli_num_rows($Users); 

以下函數的調用是不正確的:

您的mysqli_select_db()調用也存在問題,因爲PHP抱怨第一個參數是字符串。我相信你有錯誤的順序參數;參數mysqli_select_db()的參數的順序是mysql_select_db()(不包括i)的訂單不一樣

你的代碼應該是這個樣子:

/* $connect = mysqli_connect (...); */ 

mysqli_select_db($connect, $database_connect); 
$query_Users = "SELECT * FROM students"; 
$Users = mysqli_query($connect, $query_Users) 
      or die(mysqli_error($connect)); 
$row_Users = mysqli_fetch_assoc($Users); 
$totalRows_Users = mysqli_num_rows($Users); 

也有與此代碼的問題:你打電話mysql_real_escape_string()

$theValue = function_exists("mysql_real_escape_string") ? 
    mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 
/* ... */ 

(不i)而不是mysqli_real_escape_string()。「實際」轉義函數的意義在於函數在轉義字符串時考慮了連接的字符編碼。但是,您不能使用舊的MySQL轉義函數使用MySQLi鏈接資源。

由於您使用的是MySQLi,因此不需要檢查「真實」轉義函數的存在。您的代碼應該簡單閱讀:

$theValue = mysqli_real_escape_string($connect, $theValue); 

並確保先連接到數據庫。


注意mysqli_connect()mysqli_select_db()mysqli_query()可能返回false,並且mysqli_fetch_assoc()可能返回NULL。可靠的代碼應該測試(幾乎)所有錯誤條件的返回值。

2

您正在使用mysql_和mysql _功能。您應該只使用mysql i或PDO。

mysql_函數已被棄用。

mysqli_函數與mysql_函數有點不同。大多數時候你需要添加一個額外的參數:連接資源。

例如:

$link = mysqli_connect("localhost", "my_user", "my_password", "my_database"); 
mysqli_query($link, "SHOW TABLES"); 

不僅僅是谷歌「PHP函數名」,您連接到要了解有關特定功能的信息

+0

感謝您的協助Frankbeen,但我已經在另一個文件中完成了這項工作,我在這裏調用,就像我在任何其他文件中完成的那樣構成網站的一部分。 –

+0

我也試過並改爲mysqli,但錯誤仍然存​​在 –

相關問題