[英]How to connect a webpage to a database using PHP and MySQLi in Dreamweaver
我正在使用Dreamweaver生成用于连接数据库的PHP和SQLi代码。 我已成功完成此操作,但仍收到以下错误:
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);
?>
您正在使用mysql_和mysql i _函数。 您应该只使用mysql i或PDO。
mysql_函数已被弃用。
mysqli_函数与mysql_函数有些不同。 大多数时候,您需要添加一个额外的参数:连接资源。
例如:
$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");
mysqli_query($link, "SHOW TABLES");
只是谷歌“ PHP 函数名称 ”来查找有关特定功能的信息
您没有发布连接数据库的部件,但是当您使用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);
此代码还有一个问题:
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); /* ... */
您正在调用mysql_real_escape_string()
(不带i
),而不是mysqli_real_escape_string()
。 “真实”转义功能的要点是,转义字符串时,该功能会考虑连接的字符编码。 但是,您不能将MySQLi链接资源与旧的MySQL转义功能一起使用。
由于您使用的是MySQLi,因此无需检查“真实”转义功能的存在。 您的代码应简单地理解为:
$theValue = mysqli_real_escape_string($connect, $theValue);
并确保您首先连接到数据库。
请注意, mysqli_connect()
, mysqli_select_db()
和mysqli_query()
可能返回false
,而mysqli_fetch_assoc()
可能返回NULL
。 健壮的代码应该测试(几乎)所有返回值是否有错误情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.