sql >> データベース >  >> RDS >> PostgreSQL

プリペアドステートメントに配列を指定します

    いいえ、そうではありません。テキスト配列を挿入しました... $ columnのタイプがテキストの場合、コードで読み取る必要があります

    $tag    =  array('item1', 'item2', 'item3');
    
    // Prepare a query for execution
    $result = pg_prepare($dbconn, "my_query", "INSERT INTO $table ($column) VALUES ($1)");
    
    // Execute the prepared query.  Note that it is not necessary to escape
    // the string "Joe's Widgets" in any way
    foreach( $tag as $i )
        $result = pg_execute($dbconn, "my_query", array($i));
    /// alternatively you could try this if you really wanna insert a text as array of text without using text[] type - uncomment line below and comment the 2 above
    // $result = pg_execute($dbconn, "my_query", array(json_encode($tag)));
    

    または、$columnをtext[]として定義した場合、これはpostgresqlで配列として有効であり、コードは次のように読み取る必要があります

    $tag    =  array('item1', 'item2', 'item3');
    
    // Prepare a query for execution
    $result = pg_prepare($dbconn, "my_query", "INSERT INTO $table ($column) VALUES ($1)");
    
    // Execute the prepared query.  Note that it is not necessary to escape
    // the string "Joe's Widgets" in any way
    $tmp = json_encode($tag);
    $tmp[0] = '{';
    $tmp[strlen($tmp) - 1] = '}';
    $result = pg_execute($dbconn, "my_query", array($tmp));
    


    1. Oracleプロシージャでテーブルを切り捨てる方法は?

    2. テーブルに他のフィールドがある場合、MysqlはDATETIMEインデックスを使用しません

    3. PHPテーブルから行のサブセットを選択する

    4. 配列をフィールド値として保存したり、配列値をレコードとして保存したりするのは良い考えですか?