php
  • mysql
  • 2012-12-11 88 views -2 likes 
    -2

    我有這樣的代碼,我試圖以使用diplay表列名的複選框值,我的意思是什麼liek這樣的:顯示數據庫領域的多個選擇複選框

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

    感謝

    +1

    **單挑

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

    同樣的事情!**未來版本*自嘲和刪除*了'mysql_'系列函數。現在將是[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli)的好時機。 – Charles

    +0

    嘿,謝謝,我會嘗試使用PDO ..就是這樣,現在我開始熟悉mysql_,然後我需要切換得這麼快:) –

    +0

    只需仔細檢查一下:你對這些值不感興趣/表'forma'的記錄,但列名稱,即顯示爲'SHOW CREATE TABLE \ forma \''結果的名稱? – VolkerK

    回答

    0

    前言:mysql擴展標記爲過時,更好地利用庫MySQLi或PDO


    雖然也有像 mysql_field_nameSHOW COLUMNS功能,我建議使用 INFORMATION_SCHEMA因爲它給你更多的靈活性。 PHP的使用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); 
    } 
    
    +0

    非常感謝你:) –

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

    我希望我理解正確你的問題。

    +0

    是的,你做了,它是偉大的:) 你能幫我什麼嗎? 使用PDO作爲有人建議你能看到我更新的問題? 謝謝! –

    0

    使用SHOW COLUMNS與PDO:

    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進行檢索。

    +0

    非常感謝你...我想學習使用PDO :) –

    相關問題