-2

テーブルの列名をチェックボックスの値として表示するために使用しようとしているこのコードがあります。つまり、これに似たものがあります。

$section = mysql_query("SELECT * FROM forma");  
while ($row = mysql_fetch_assoc($section)){
echo "<input type='checkbox' name='data[]' value='" . $firstrow[''] . "' />";

}

私はそれを間違った方法で持っていますが、手動ではなく自動で列名をチェックボックスとして印刷するにはどうすればよいですか?

PDOを使用してそれに到達する方法は?

$ q = $ dbh-> prepare( "DESCRIBE forma"); $ q-> execute(); $ table_fields = $ q-> fetchAll(PDO :: FETCH_COLUMN);

ありがとう

4

3 に答える 3

0

たとえば、次のようにすべての列をループする必要があります。

$firstrow = false;
while ($row = mysql_fetch_assoc($section)){
    if (!$firstrow) {
        foreach ($row as $column => $value) {
            echo "<input type='checkbox' name='data[]' value='" . $column . "' />"; 
        }
        $firstrow = true;
    }
}

あなたの質問を正しく理解できたことを願っています。

于 2012-12-11T09:05:19.643 に答える
0

前書き: MySQL 拡張機能は非推奨としてマークされています。mysqli またはPDOを使用することをお勧めします


mysql_field_nameSHOW COLUMNS などの関数がありますが、柔軟性が増すため、 INFORMATION_SCHEMAを使用することをお勧めします。

<?php
$database = 'test';
$table = 'forma';

$mysql = mysql_connect('localhost', 'localonly', 'localonly') or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error($mysql)); // selecting db is not not necessary in this case

$query = sprintf("
    SELECT
        COLUMN_NAME, COLUMN_TYPE
    FROM
        INFORMATION_SCHEMA.COLUMNS
    WHERE
        TABLE_SCHEMA = '%s'
        AND TABLE_NAME = '%s'
",
    mysql_real_escape_string($database),
    mysql_real_escape_string($table)
);
$result = mysql_query($query, $mysql) or die(mysql_error($mysql));

while( false!=($row=mysql_fetch_array($result)) ) {
    $name = htmlspecialchars($row['COLUMN_NAME']);
    $type = htmlspecialchars($row['COLUMN_TYPE']);
    printf("<input type=\"checkbox\" name=\"col[]\" value=\"%s\" />%s (%s)<br />\r\n", $name, $name, $type);
}

PDOを使用して同じこと

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('
    SELECT
        COLUMN_NAME, COLUMN_TYPE
    FROM
        INFORMATION_SCHEMA.COLUMNS
    WHERE
        TABLE_SCHEMA = :database
        AND TABLE_NAME = :table
');
$stmt->execute( array('database'=>'test', 'table'=>'forma') );
foreach( $stmt as $row ) {
    $name = htmlspecialchars($row['COLUMN_NAME']);
    $type = htmlspecialchars($row['COLUMN_TYPE']);
    printf("<input type=\"checkbox\" name=\"col[]\" value=\"%s\" />%s (%s)<br />\r\n", $name, $name, $type);
}
于 2012-12-11T09:14:46.387 に答える
0

SHOW COLUMNSPDO での使用:

try {
    $dbh = new PDO('mysql:dbname=testdb;host=localhost', 'username', 'passwqord');
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}

$result = $dbh->query('SHOW COLUMNS FROM forma');

if($result)
{
    foreach($result as $row)
    {
        echo "<input type='checkbox' name='data[]' value='" . htmlspecialchars($row['Field']) . "' />";
    }
}

DESCRIBE formaの代わりに を使用しても、同じ結果を取得できますSHOW COLUMNS

于 2012-12-11T09:10:53.930 に答える