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

时间:2015-06-07 10:35:15

标签: php mysqli

我正在使用Dreamweaver生成用于连接数据库的PHP和SQLi代码。我已成功完成,但我一直收到以下错误:

<xe:dataView
    ...
    collapsibleDetail="true">
    <xp:this.facets>
        <xp:panel
            id="details"
            xp:key="detail">
            ...
        </xp:panel>
    </xp:this.facets>
    ...
    <xe:this.summaryColumn>
        <xe:viewSummaryColumn
            ...
            href="javascript:document.getElementById('#{id:details}'.replace(':details', '_shimg')).parentElement.click()">
        </xe:viewSummaryColumn>
    </xe:this.summaryColumn>
</xe:dataView>

这是我的源代码:

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,

2 个答案:

答案 0 :(得分:2)

您正在使用mysql_和mysql i _功能。你应该只使用mysql i 或PDO。

mysql_函数已被弃用。

mysqli_函数与mysql_函数有点不同。大多数时候你需要添加一个额外的参数:连接资源。

例如:

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

只需谷歌&#34; php 功能名称 &#34;查找有关特定功能的信息

答案 1 :(得分: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()的参数顺序与<{3}}的顺序不一样(没有 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_select_db()(不包含 i ),而不是mysql_real_escape_string()。 “真正的”转义函数的要点是该函数在转义字符串时会考虑连接的字符编码。但是,您不能将MySQLi链接资源与旧的MySQL转义函数一起使用。

由于您使用的是MySQLi,因此无需检查是否存在“真正的”转义函数。您的代码应该只是阅读:

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

并确保首先连接到数据库。

请注意,mysqli_real_escape_string()mysqli_connect()mysqli_select_db()可能会返回false,而mysqli_query()可能会返回NULL。强大的代码应该(几乎)测试错误条件的所有返回值。