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

时间:2017-06-16 16:51:27

标签: php mysql

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

E.g。链接:.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 );
      ?>

2 个答案:

答案 0 :(得分:1)

如果确实必须按行号(可以根据where或order by子句改变),你可以使用limit子句:

SELECT * 
FROM Tabelle1
LIMIT 1000,1;

更好的设计是拥有一个唯一的密钥,并根据它选择一行:

SELECT * 
FROM Tabelle1
WHERE `id` = 1000;

由于您没有包含表格的架构,我只是将列名称作为示例。

要获取传递给php脚本的值,可以使用:

$row_num = $_REQUEST['row'];

答案 1 :(得分:1)

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);
}

print.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>