<?php
$user = 'root';
$password = 'root';
$db = 'urls';
$host = 'localhost';
$port = 8889;
$link = mysqli_init();
$success = mysqli_real_connect(
$link,
$host,
$user,
$password,
$db,
$port
);
//echo $success;
$query = "SELECT id, title, url, votes FROM link ORDER BY id LIMIT 3";
$result = mysqli_query($success, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)'n", $row["title"], $row["url"]);
/* free result set */
mysqli_free_result($result);
/* close connection */
mysqli_close($link);
?>
这就是我写的代码。显然,这样做的目的是从我的mysql服务器获取最新数据并将其打印出来。但是,当我在Mac上运行此代码时(我使用的是MAMP(,它只显示"0"。这有什么问题?
mysqli_real_connect
返回一个布尔值,它不返回MySQLi资源。因此,您必须在$link
上运行查询,而不是在$success
上运行查询
$result = mysqli_query($success, $query);
^
应该是
$result = mysqli_query($link, $query);
没有任何错误检查,它就像一个猜谜游戏,请考虑错误检查连接是否导致错误或查询本身,这将对您有很大帮助。
另请注意,您必须在一次调用中一起获取所有行(使用与您现在使用的功能不同的函数(,或者您必须遍历结果以获取所有行,使用您当前的代码,即使问题得到解决,您最多也只会得到 1 行。
另一方面,为什么不使用更简单的mysqli_connect
选项并使用这个 2 步连接而不使用任何特殊标志?
尝试更多的
(
错误处理
<?php
$user = 'root';
$password = 'root';
$db = 'urls';
$host = 'localhost';
$port = 8889;
echo date('Y-m-d H:i:s', filemtime(__FILE__)), "'r'n";
$link = mysqli_init();
if ( !mysqli_real_connect($link, $host, $user, $password, $db, $port) ) {
trigger_error('connect failed', E_USER_ERROR);
}
else {
$query = "SELECT id, title, url, votes FROM link ORDER BY id LIMIT 3";
$result = mysqli_query($link, $query); // <- you have to pass the connection resource/object here
if ( !$result ) {
trigger_error('query failed', E_USER_ERROR);
}
else {
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if ( !$row ) {
echo 'no results';
}
else {
do {
printf ("%s (%s)'n", $row["title"], $row["url"]);
} while($row = mysqli_fetch_array($result, MYSQLI_ASSOC));
}
/* free result set */
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
}
(回声日期...行用于检查您是否正在查看最新和最好的脚本版本的输出;-(