错误:从mysql获取数据并在Web上显示

时间:2015-11-10 16:42:01

标签: php mysql

<?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'。这有什么问题?

2 个答案:

答案 0 :(得分:2)

mysqli_real_connect返回一个布尔值,它不返回MySQLi资源。因此,您必须在$link而非$success

上运行查询
$result = mysqli_query($success, $query);
                       ^

应该是

$result = mysqli_query($link, $query);

没有任何错误检查,它就像一个猜谜游戏,请考虑错误检查连接是否导致错误或查询本身,这将帮助你很长的路。

另请注意,您必须在一次调用中获取所有行(使用与您现在使用的函数不同的函数),或者您必须遍历结果以获取所有行,并使用您当前的代码即使问题得到解决,也只能获得最多一行。

另外请注意,为什么不使用更简单的mysqli_connect选项并使用此2步连接而不使用任何特殊标志?

答案 1 :(得分:1)

尝试使用更多错误处理

<?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);
}

(echo date ...行用于检查您是否正在查看最新和最好的脚本版本的输出;-))