【问题标题】:Get all rows from MySQL Query从 MySQL Query 中获取所有行
【发布时间】:2016-05-17 22:06:05
【问题描述】:

PHP 代码:

<?php
//Server Information
$servername = "localhost";
$dbusername = "USERNAME";
$password = "TOTALLYSECUREPASSWORD";
$dbname = "DEFINITELYADATABASE";

//Query Information
$guid = $_POST['GUID'];
$username = $_POST['USERNAME'];
$admin_username = $_POST['ADMIN_USERNAME'];
$ban_reason  = $_POST['BAN_REASON'];
$ip = $_POST['IP'];

//Create Connection
$connection = mysqli_connect($servername, $dbusername, $password, $dbname);

//Check the Connection
if ($connection->connect_error){
    die("Connection failed: " . $connection->connect_error);
}

//$sql = "SELECT DATE, DBUSERNAME, GUID, IP, USERNAME, BAN_REASON FROM bans";
//$result = $connection->query($sql);

$sql = "SELECT * FROM bans WHERE";

$types = json_decode($_POST['QUERY_TYPE'], true);

if (in_array("query_admin_username", $types)) {
    $sql = $sql . " DBUSERNAME = " . "\"" . $admin_username . "\"" . " &&";
}

if (in_array("query_guid", $types)) {
    $sql = $sql . " GUID = " . "\"". $guid . "\"" . " &&";
}

if (in_array("query_ip", $types)) {
    $sql = $sql . " IP = " . "\"" . $ip . "\"" . " &&";
}

if (in_array("query_username", $types)) {
    $sql = $sql . " USERNAME = " . "\"" . $username . "\"" . " &&";
}

if (in_array("query_ban_reason", $types)) {
    $sql = $sql . " BAN_REASON = " . "\"" . $ban_reason . "\"" . " &&";
}

$sql_query = substr($sql, 0, -3);

echo ($sql_query);

$result = $connection->query($sql_query);

while ($connection->query($sql_query)) {

}

if (!$result) {
    die("Invalid Query: " . mysqli_error());
}

$row = $result->fetch_array(MYSQLI_NUM);

while ($row = mysqli_fetch_assoc($result)) {
    echo ($row);
}

mysqli_close($connection);
?>

尽管看起来很奇怪,但它的工作原理正是我想要的(我认为)。

我的问题:

我希望能够从每一行获取数据并将其导出为一个大字符串,类似于:

[DATE] DBUSERNAME banned USERNAME (GUID / IP) for BAN_REASON.

我完全不知道该怎么做。我已经测试了查询并且它返回了它应该返回的所有内容,但是我使用“echo ($row[0])”等来显示它们,如果它要返回大量的行,这是非常不切实际的。

抱歉,如果有什么不合理的地方,我的大脑此刻被炸了。如果我忘记了什么,请告诉我。

【问题讨论】:

标签: php mysql


【解决方案1】:

如果脚本的其余部分有效,您可以像这样连接列:

SELECT CONCAT('[',DATE,'] ',DBUSERNAME,' banned ',USERNAME,'(',COALESCE(GUID, IP),),') for ', BAN_REASON) AS your_columns_in_one_line FROM your_table WHERE .....;

查看此链接以参考CONCAT

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2012-04-01
    相关资源
    最近更新 更多