数据无法从数据库中检索出来

时间:2017-05-02 10:40:42

标签: php mysql sql

这是我与数据库的连接

<?php

    // this will avoid mysql_connect() deprecation error.
    error_reporting( ~E_DEPRECATED & ~E_NOTICE );
    // but I strongly suggest you to use PDO or MySQLi.

    define('DBHOST', 'localhost');
    define('DBUSER', 'root');
    define('DBPASS', '');
    define('DBNAME', 'dbtest');

    $conn = mysql_connect(DBHOST,DBUSER,DBPASS);
    $dbcon = mysql_select_db(DBNAME);

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

    if ( !$dbcon ) {
        die("Database Connection failed : " . mysql_error());
    }

这是从数据库中检索数据的简单代码

<?php

require_once 'dbconnect.php';

$query="SELECT * FROM `users`";
if($is_query_run=mysql_query($query))
{
echo "query executed<br>";
while($query_execute=mysql_fetch_array($is_query_run));
 {
    echo 'sql is running';
    echo '<tr><td>'.$query_execute['userName'].'</td><td>'.$query_execute['userEmail'].'</td></tr';

 }
}
else
{ 
echo "query not executed";
}
?>

但是我仍然无法检索数据

它没有从数据库中给我任何数据,即使我已经为它设置了几个用户名和useremail ....可以做注册和登录,但不能将其作为echo..wonder检索出来...请任何人都可以帮我? 结果只出来了

query executed
sql is running

3 个答案:

答案 0 :(得分:1)

编辑:我发现你刚刚接受了答案。我需要指出你的代码无法显示结果的真正问题; “仅供记录”以及未来访问者的问题/答案。

问题出在这一行:

while($query_execute=mysql_fetch_array($is_query_run)); // <<< semi-colon

注意结束分号?它“结束”该语句并且不会抛出错误,因为它被认为是PHP和其他语言中的有效语句。

该循环内的任何内容都不会显示,您需要删除它。

你使用的api显然有效,因为有2个echo出现了。

参考:

  

“在C或Perl中,PHP要求在每个语句的末尾用<分号>终止指令。一段PHP代码的结束标记自动表示分号;你不需要用分号来终止PHP块的最后一行。块的结束标记将包括紧接着的新行(如果有的话)。“

您还应该考虑切换到mysqli或PDO api; mysql_ api已弃用,自PHP 7起已删除。

如果用户互动发挥作用,请考虑使用准备好的声明。

编辑#2:

我再次通过你的代码时发现了别的东西。 '</td></tr';>缺少'</td></tr>';,应该读作<table></table>并且不确定您是否有'</td></tr';个标记,除非您没有在问题中包含这些标记。

如果{{1}}只是一个糟糕的粘贴或者是您真实代码的一部分,那么它是未知的。

如果它是您真实代码的一部分,那么这将破坏/影响HTML和输出。

答案 1 :(得分:0)

由于每个人都建议您使用mysqli而不是mysql,这是使用mysqli的简单工作示例。

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "dbtest";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM `users`";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
    echo "UserName: " . $row["userName"]. " Email: " . $row["userEmail"]. "<br>";
 }
} else {
echo "0 results";
}
$conn->close();

希望这有效。

答案 2 :(得分:-1)

使用mysqli而不是mysql。

mysqli代表mysql改进。

mysqli的主要有用功能是:

面向对象的界面, 支持准备好的陈述, 支持多个陈述, 支持交易, 增强的调试功能, 嵌入式服务器支持。