0

尝试使用以下代码连接到 localhost sql db(此时不对查询执行任何操作,只希望执行查询):

<?php

$host     = "localhost";
$port     = 3306;
$socket   = "";
$user     = "root";
$password = "Password1";
$dbname   = "CIIP_WIKI";

$con = new mysqli($host, $user, $password, $dbname, $port);

if(!$con)
{
echo ("db connection failed!");
die ('Could not connect to the database server' . mysqli_connect_error());
}

else {
    echo ("db connection established.");
    echo ("<br/>");
    }

$query = sprintf("SELECT first_name FROM actor WHERE actor_id='1'");

$result = mysql_query($query);

$con->close();

?>

我不断收到以下...

Welcome

db connection established.

Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\Program Files (x86)\EasyPHP-12.1\www\Cisco Wiki\index.php on line 31

Warning: mysql_query(): A link to the server could not be established in C:\Program Files (x86)\EasyPHP-12.1\www\Cisco Wiki\index.php on line 31

为什么这不起作用?

4

2 回答 2

16

这是因为您使用创建连接mysqli_,然后使用mysql_尝试获取结果。它们是不同的 API。

<?php

/* You should enable error reporting for mysqli before attempting to make a connection */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

/* Set the desired charset after establishing a connection */
mysqli_set_charset($mysqli, 'utf8mb4');

printf("Success... %s\n", mysqli_get_host_info($mysqli));

示例取自 PHP 手册

于 2013-02-22T00:50:05.427 回答
0

只要您尝试在没有可用的有效连接对象的情况下执行查询,就会记录此警告。

在您的情况下,您认为您有一个有效的连接对象可用,但是您在使用 mysql 执行查询时使用 mysqli 创建了它。这是两个不同的 API,因此 mysql_query 函数正在寻找一个 mysql 连接对象但没有找到它。

于 2018-05-22T16:24:32.263 回答