php - SQL 查询未在我创建的 php 命令行界面中执行

标签 php mysql

我出于自己的目的制作了一个 SQL 命令行界面,并使用以下代码进行测试: input.php

<!DOCTYPE html>
<html>
<body>
      'DESC'command under dev...
      <form action="output.php" method="post">
            <textarea name="query"></textarea>
            <input type="submit">
      </form>
</body>
</html>

输出.php

<!DOCTYPE html>
<html>
    <body>
        <div>
<?php

$servername = "server_name"; //I do not wish to show my credentials
$username = "username";
$password = "password";
$dbname = "database";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$sql = $_POST["query"];
$result = $conn->query($sql);
  if ($result === TRUE) {
        if (substr($sql, 0, 6) == "SELECT") {
              //Initialize table
              echo "<table class=\"table\">";
              echo "<tr><th>ID</th><th>Username</th><th>Password</th><th>Email</th></tr>";
              // output data of each row
              while($row = $result->fetch_assoc()) {
                     echo "<tr><td>" . $row["id"]. "</td><td>" . $row["username"]. "</td><td>" . $row["password"]. "</td><td>" . $row["email"] . "</td></tr>";
              }
              echo "</table>";

                echo "<code>" . $result->num_rows . " rows selected</code>";

    } elseif (substr($sql, 0,11) == "INSERT INTO") {
        echo "Inserted. Command: $sql";
    } elseif (substr($sql, 0, 6) == "DELETE") {
          echo "Deleted. Command: $sql";
    } elseif (substr($sql, 0, 6) == "UPDATE") {
          echo "Updated. Command: $sql";
    } else {
          echo "Code under dev...\nSorry!";
    }
  } else {
        echo "ERROR: " . $conn->error;
  }

  echo "<br>";
?>
        </div>
</body>
</html>

我已检查数据库凭据;他们都很好 - 没有连接错误。 我知道这一点是因为我之前使用过包含一些数据的表。 现在,在输入查询时,除了留下一条消息“错误:”之外,什么也没有发生。 如果有任何错误,请通知我。

最佳答案

query() 函数仅在使用不影响行的 SQL 语句调用时返回 TRUE。在所有其他情况下,它返回 mysqli_result() 类型的对象。

这会导致 if ($result === TRUE) 跳转到 else 并显示错误。事实上没有错误,因为 $result 可能包含一个结果对象。

尝试通过将 echo $result->num_rows; 添加到 else 子句来确认这一点。

mysqli::query

请参阅mysqli::result有关如何处理查询结果的更多信息的文档。

关于php - SQL 查询未在我创建的 php 命令行界面中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32922974/

相关文章:

php - 如何在 Google map 上添加信息窗口和标记

php - 用PHP获取嵌套的XML元素

PHP 最佳实践 : Im loading the $GLOBALS array with a lot of information to be shared between my php pages

php - $_FILES 超全局变量可以在类中访问吗

mysql - Appserv 命令行批处理

php - 将每三个结果放入一个新的 TR 中

php - laravel Eloquent : filtering rows with month or date

php - 无法显示来自 MySQL 的图像

MYSQL 日期时间 : using slashes instead of of dahses

PHP数组循环迭代并将获取的结果放入MySQL表中