0

私はphpクラスジェネレーターを使っています。基本的には、mysqlで指定されたテーブルを取得し、それに応じてクラスを生成します。あなたはアイデアを得るでしょう:

....
$sql_r = mysqli_query($sql_conn, "select * from $sql_table;");
$sql_Fs = $sql_r->fetch_fields();
?>
<pre class="php">
    &lt;?php
    class <?php echo $sql_table; ?>{
        <?php foreach($sql_Fs as $sql_f) echo "var ".$sql_f->name."; "; ?>

        function sql_insert(){
            $sql_conn = sql_conn();
            $sql_stmt =$sql_conn->prepare("INSERT INTO <?php echo $sql_table; ?> (<?php foreach($sql_Fs as $K=>$sql_f){ if($K>1){ echo ", ";} if($K>0){ echo $sql_f->name; }} ?>) VALUES (<?php foreach($sql_Fs as $K=>$sql_f){ if($K>1){ echo ", "; } if($K>0) {echo "?"; }} ?>)");

            $sql_stmt->bind_param('', <?php foreach($sql_Fs as $K=>$sql_f){ if($K>1){ echo ", "; } if($K>0){ echo "\$this->".$sql_f->name; }} ?>);
                                 //^^^^ Need data type

            if(!$sql_stmt->execute()){ error_log($sql_stmt->error); $R = false; }else{ $R = true; }
            $sql_stmt->close(); $sql_conn->close(); return $R;
        }
        .....

私が立ち往生しているのは、bind_paramデータ型を設定することです。fetch_field->typeを取得でき、そのタイプの数値が得られることがわかりました( http://php.net/manual/en/mysqli-result.fetch-field.phpを参照)。

データ型に対応する文字を直接取得する方法はありますか?(s、i、d、b)または私は本当に数値(fetch_field-> type)から対応する文字に変換する関数を作成する必要がありますか?

参考:現在、次のような出力があります。

function sql_insert(){
    $sql_conn = sql_conn();
    $sql_stmt =$sql_conn->prepare("INSERT INTO user (flag, name, mail, pass) VALUES (?, ?, ?, ?)");
    $sql_stmt->bind_param('', $this->flag, $this->name, $this->mail, $this->pass);
    if(!$sql_stmt->execute()){ error_log($sql_stmt->error); $R = false; }else{ $R = true; }
    $sql_stmt->close(); $sql_conn->close(); return $R;
}

完全ではないことは承知していますが、それは別の質問です;)乾杯

4

1 に答える 1

0

それが誰かを助けることができる場合に備えて、私はここに私の解決策を投稿しています。

次のように、dbの回路図を検索するclomunyのデータ型を取得できます。

SELECT
    COLUMN_NAME,
    DATA_TYPE,
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = '$sql_table' 
AND table_schema = '$sql_database';

このクエリから取得できるその他の興味深い情報:

IS_NULLABLE
CHARACTER_MAXIMUM_LENGTH
COLUMN_KEY

公式ドキュメント:http ://dev.mysql.com/doc/refman/5.0/en/columns-table.html

于 2013-03-07T20:31:07.857 に答える