2015-06-07 91 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,但错误仍然存​​在 –

相关问题