尝试使用以下代码连接到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
为什么这不起作用?
答案 0 :(得分:16)
这是因为您使用mysqli_
创建了连接,然后使用mysql_
尝试获取结果。它们是不同的API。
<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link);
?>
答案 1 :(得分:0)
只要您尝试执行没有有效连接对象的查询,就会记录此警告。
在你的情况下你想你有一个有效的连接对象,但你在使用mysql执行查询时使用mysqli创建了它。这是两个不同的API,所以mysql_query函数正在寻找一个mysql连接对象而没有找到它。