我已经为自己的目的创建了一个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>
output.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>
我已检查过数据库凭据;他们都很好 - 没有conn错误。 我知道这是因为我之前使用过包含一些数据的表。 现在,在输入查询时,除了留下消息“错误:”之外没有任何反应。 如有任何错误,请通知我。
答案 0 :(得分:0)
query()函数仅在使用不影响行的SQL语句调用时才返回TRUE。在所有其他情况下,它返回一个mysqli_result()类型的对象。
这会导致if ($result === TRUE)
跳转到else
并显示错误。实际上没有错误,因为$ result可能包含一个结果对象。
尝试通过在echo $result->num_rows;
条款中添加else
来确认这一点。
有关如何处理查询结果的详细信息,请参阅mysqli::result文档。