php - MySQL动态链接以获取正确的行

标签 php mysql

我有一个包含 x 行的 MySQL 数据库。 现在我想解释一个链接,获取正确的行并打印这个值。

例如链接:.html?row=3 -> 打开获取第 3 行并打印它们的站点。

.html?row=1000 -> 打开获取第 1000 行并打印的站点

我不知道如何连接这个动态链接和数据库。 当我手动选择行时,我只能打印数据库。

<?php
require_once ('../mysql/config.php');
$db_link = mysqli_connect (
                 MYSQL_HOST, 
                 MYSQL_BENUTZER, 
                 MYSQL_KENNWORT, 
                 MYSQL_DATENBANK
                );
mysqli_set_charset($db_link, 'utf8');
if (!$db_link) {
die('keine Verbindung möglich: ' . mysql_error());
} 

$sql = "SELECT * FROM Tabelle1";
$db_erg = mysqli_query( $db_link, $sql );
?>
if ( ! $db_erg )
      {
        die('Ungültige Abfrage: ' . mysqli_error());
      }
      while ($row = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
      {
        echo $row['B'];
        echo $row['E'];
      }
      mysqli_free_result( $db_erg );
      ?>

最佳答案

mysql/data_access.php

<?php

/*
 * ---------------------
 * Data access functions
 * ---------------------
 */

/**
 * Create a new db connection.
 * 
 * @param string $host Host.
 * @param string $dbname Database name.
 * @param string $username Username.
 * @param string $password Password.
 * @param string $port [optional] Port.
 * @param array $charset [optional] Character set.
 * @param array $options [optional] Driver options.
 * @return PDO Db connection.
 */
function createConnection($host, $dbname, $username, $password, $port = '3306', $charset = 'utf8', $options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_PERSISTENT => true,
)) {
    $dsn = getDsn($host, $dbname, $port, $charset);
    $connection = new PDO($dsn, $username, $password);
    foreach ($options as $key => $value) {
        $connection->setAttribute($key, $value);
    }
    return $connection;
}

/**
 * Create a mysql DSN string.
 * 
 * @param string $host Host.
 * @param string $dbname Database name.
 * @param string $port [optional] Port.
 * @param array $charset [optional] Character set.
 * @return string DSN string.
 */
function getDsn($host, $dbname, $port = '3306', $charset = 'utf8') {
    $dsn = sprintf('mysql:host=%s;port=%s;dbname=%s;charset=%s'
            , $host
            , $port
            , $dbname
            , $charset
    );
    return $dsn;
}

/**
 * Close a db connection.
 * 
 * @param PDO $connection Db connection.
 * @return void
 */
function closeConnection($connection) {
    $connection = NULL;
}

/**
 * Get the data type of a binding value.
 * 
 * @param mixed $value Binding value.
 * @return mixed Data type of the binding value.
 */
function getInputParameterDataType($value) {
    $dataType = PDO::PARAM_STR;
    if (is_int($value)) {
        $dataType = PDO::PARAM_INT;
    } elseif (is_bool($value)) {
        $dataType = PDO::PARAM_BOOL;
    }
    return $dataType;
}

error_reporting.php

<?php

/*
 * -------------------------
 * Error reporting functions
 * -------------------------
 */

/**
 * Toggle error reporting.
 * 
 * @param integer $level Error level.
 * @param bool $display_errors Display errors if TRUE, hide them otherwise.
 * @return void
 */
function acivateErrorReporting($level = E_ALL, $display_errors = 1) {
    error_reporting($level);
    ini_set('display_errors', $display_errors);
}

打印.php

<?php

/**
 * Print data on screen.
 * 
 * @param mixed $data Data to print.
 * @param bool $preformatted Print preformatted if TRUE, print normal otherwise.
 * @return void
 */
function printData($data, $preformatted = FALSE) {
    if ($preformatted) {
        echo '<pre>' . print_r($data, true) . '</pre>';
    } else {
        echo $data;
    }
}

deli_list.php

<?php
require_once ('../mysql/config.php');
require_once ('../mysql/data_access.php');
require_once ('../mysql/print.php');

// Validate the 'id' value from the query string
if (!isset($_GET['id']) || empty($_GET['id']) || $_GET['id'] == 0) {
    echo 'Please provide a valid "id" value!';
} else {
    try {
        // Read the 'id' value from the query string.
        $id = $_GET['id'];

        // Create db connection.
        $connection = createConnection(
                MYSQL_HOST, MYSQL_DATENBANK, MYSQL_BENUTZER
                , MYSQL_KENNWORT, MYSQL_PORT, MYSQL_CHARSET
        );

        // Define sql statement.
        $sql = 'SELECT * FROM Tabelle1 WHERE id = :id';

        // Prepare and check sql statement (returns PDO statement).
        $statement = $connection->prepare($sql);
        if (!$statement) {
            throw new Exception('The SQL statement can not be prepared!');
        }

        // Bind values to sql statement parameters.
        $statement->bindValue(':id', $id, getInputParameterDataType($id));

        // Execute and check PDO statement.
        if (!$statement->execute()) {
            throw new Exception('The PDO statement can not be executed!');
        }

        // Fetch person details.
        $fetchedData = $statement->fetchAll(PDO::FETCH_ASSOC);

        closeConnection($connection);
    } catch (PDOException $pdoException) {
        printData($pdoException->getMessage());
        exit();
    } catch (Exception $exception) {
        printData($exception->getMessage());
        exit();
    }
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>App title</title>
    </head>
    <body>

        <!-- Accordion example -->
        <ul class="accordion">
            <?php
            foreach ($fetchedData as $record) {
                ?>
                <li>
                    <?php echo $record['A'] ?> - <?php echo $record['B'] ?> - <?php echo $record['C'] ?>
                </li>
                <?php
            }
            ?>
        </ul>

        <!-- Table example -->
        <table>
            <?php
            foreach ($fetchedData as $record) {
                ?>
                <tr>
                    <td>
                        <?php echo $record['A'] ?>
                    </td>
                    <td>
                        <?php echo $record['B'] ?>
                    </td>
                    <td>
                        <?php echo $record['C'] ?>
                    </td>
                </tr>
                <?php
            }
            ?>
        </table>

    </body>
</html>

关于php - MySQL动态链接以获取正确的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594328/

相关文章:

php - 将 MySQL 表数据回显为 HTML

php 求两个数中的较大者

php - 提交 CI 表单后没有任何反应

php - 如何将 PHP 整型变量中的整型值传递给 JS?

mysql - 如何将vb.net日期保存到mysql日期而不带0000-00-00

mysql - MySQL中如何让多个表共享id列

javascript - 制作sql删除按钮来提交表单

javascript - 在 Yii 中的 Controller 的 <head> 中显示自定义 HTML

php - 在 php 中转换 mysql 时间时,无论 mysql 时间如何,我总是得到 16 :00:20,

mysql - 如何从不同的表中列出多个属性? MySQL