mysql中的查询工作在php中失败

时间:2015-12-08 00:49:05

标签: php mysql

我是php新手并且一直试图将我的mysql数据库表显示在网页上。我一直在研究w3schools教程,但是无法通过这个选择数据部分(我问的原因不是因为一个教程,而是因为我正在为课程分配工作)。

连接运行良好,但查询始终返回NULL。查询过去比较具体,但现在我只想尝试显示任何内容。

在mysql中:

describe members

返回

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Name       | varchar(30) | YES  |     | NULL    |       |
| Type       | varchar(20) | YES  |     | NULL    |       |
| State      | char(2)     | YES  |     | NULL    |       |
| Price      | int(11)     | YES  |     | NULL    |       |
| Experience | int(11)     | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

-

select * from members;

返回(显然没有显示20k行):

20000 rows in set (0.05 sec)

在PHP中:

<?php
    $conn = mysql_connect("127.0.0.1:3306", "root", "NotPostingOnSO", "coaches");

    if(!$conn) {
            die("Connection failed");
    }


    $result = mysql_query($conn, "SELECT Name FROM members");
    echo "vardump is: <br>";
    var_dump($result);

    mysql_close($conn);
?>

无论我做什么,vardump都会返回NULL ...

注意:我知道mysql_ *及其弃用但当我使用mysqli_connect时连接失败...这个网站甚至不会在一周内完成,我只需要帮助让我的数据库显示为一个表格php(最终目标)

请参阅http://45.55.175.147/findCoach.php处的vardump,其中显示错误为Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 1=1' at line 1

堆栈是Ubuntu 14.04,Apache2,PHP来自digitalocean启动的指令,同样适用于mysql

更新:

我将mysql_connect更改为mysqli_connect为:

 $conn = mysqli_connect("127.0.0.1:3306", "root", "Hydro1$", "coaches");

            if(!$conn) {
                    echo "Error: Unable to connect to MySQL." . PHP_EOL;
                    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
                    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
                    exit;
            }

返回错误:
错误:无法连接到MySQL。调试错误:2005调试错误:未知MySQL服务器主机'127.0.0.1:3306'(11)

使用mysql(而不是mysqli)进行更新 恢复为mysql_connect并修复了语法,因此查询是;

$result = mysql_query("SELECT Name FROM members");

vardump现在返回bool(false); 我觉得这个更接近,但是不会bool(false)暗示表成员没有行?

1 个答案:

答案 0 :(得分:1)

<强>更新

如您的错误指出,请将127.0.0.1:3306更改为简单的localhost。你通常不需要包含一个端口,因为mysql配置已经定义了它。

作为Fred said,您不应该使用mysqli_

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

$query = mysqli_query($link, "SELECT Name FROM members");
if(!$query){
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

print_r(mysqli_fetch_array($query,MYSQLI_ASSOC));

上面的代码可以清理,但你应该调试所有内容,以确保你没有编写错误填充的代码。

虽然,如果您正在进行此过程,您最好学习OO Mysqli方式甚至是PDO。