【问题标题】:query works in mysql fails in php查询在mysql中工作在php中失败
【发布时间】:2016-03-12 19:06:39
【问题描述】:

我是 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

stack 是 Ubuntu 14.04, Apache2, PHP from instructions on digitalocean startup 和 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) 不意味着表成员没有行吗?

【问题讨论】:

  • 打印实际的 mysql 错误(来自文档的示例)&lt;?php $result = mysql_query('SELECT * WHERE 1=1'); if (!$result) { die('Invalid query: ' . mysql_error()); } ?&gt;
  • 简单:你使用的是mysqli_语法
  • @pvg 我试过你的行,但它返回你给我的 sn-p 的语法错误
  • @Fred,您能建议如何正确执行此操作吗?我试过了: $result = $conn->query("query here");来自 w3schools,但它返回错误。有没有一种程序性的方式来代替这种面向对象的方式?或者这就是mysql的样子?我将重新运行以告诉您执行 conn->query() 时的错误是什么

标签: php mysql


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2013-01-31
    • 2018-06-19
    • 2013-11-20
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多