繁体   English   中英

如何在Dreamweaver中使用PHP和MySQLi将网页连接到数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM