cari

Rumah  >  Soal Jawab  >  teks badan

php pelbagai dimensi ke sql

Menukar tatasusunan berbilang dimensi kepada pernyataan sql, yang satu dimensi telah dilaksanakan, tetapi saya tidak tahu bagaimana untuk melakukan yang dua dimensi Sila beritahu saya, saya mempunyai banyak jika sekarang, satu jika untuk satu dimensi dan satu jika untuk pelbagai dimensi Kecekapan program adalah sangat rendah. . .

<?php
function arrayToSqlStatement( $arrayData = [] )
    {
        $_temp_string = '';
        foreach ( $arrayData as $k => $v ) {
            if ( is_array( $v ) && !empty( $v ) ) {
                $sqlCondition = $v[0];
                $sqlValue     = $v[1];
            } else {
                $sqlCondition = '=';
                $sqlValue     = trim( $v );
            }

            //根据符号组合值的样式
            if ( $sqlCondition == 'LIKE' ) {
                $_temp_string .= ' AND ' . $k . ' LIKE "%' . $sqlValue . '%" ';
            } elseif ( $sqlCondition == 'IN' ) {
                $_temp_string .= ' AND ' . $k . ' IN(' . $sqlValue . ')';
            } elseif ( $sqlCondition == 'BETWEEN' ) {
                $_between_value = explode( '|', $sqlValue );
                $_temp_string   .= ' AND ' . $k . '>="' . $_between_value[0] . '" AND ' . $k . '<="' . $_between_value[1] . '" ';
            } else {
                $_temp_string .= ' AND ' . $k . $sqlCondition . ' "' . $sqlValue . '" ';
            }
        }

        return $_temp_string;
    }
    //第二种情况,出问题了。
    $a=[
        [
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
        ],
        [
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
        ]
    ];
    //第一种情况,已经实现了
    $b=[
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
    ];
    print_r(arrayToSqlStatement($a));
?>
phpcn_u1582phpcn_u15822722 hari yang lalu939

membalas semua(2)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-14 10:52:08

    Penyoal ingin menyedari bahawa tatasusunan dua dimensi digabungkan menjadi pernyataan sql. Untuk menukar idea, parameter yang diluluskan disatukan ke dalam tatasusunan berbilang dimensi.

    <?php
    fungsi arrayToSqlStatement( $arrayData = [] )

    {
        $_temp_string = '';
        foreach ($arrayData as $parameterArray) {
            foreach ( $parameterArray as $parameter ) {
            if ( is_array( $parameter ) && !empty( $parameter ) ) {
                $sqlCondition = $parameter[0];
                $sqlValue     = $parameter[1];
            } else {
                $sqlCondition = '=';
                $sqlValue     = trim( $parameter );
            }
    
            //根据符号组合值的样式
            if ( $sqlCondition == 'LIKE' ) {
                $_temp_string .= ' AND ' . $k . ' LIKE "%' . $sqlValue . '%" ';
            } elseif ( $sqlCondition == 'IN' ) {
                $_temp_string .= ' AND ' . $k . ' IN(' . $sqlValue . ')';
            } elseif ( $sqlCondition == 'BETWEEN' ) {
                $_between_value = explode( '|', $sqlValue );
                $_temp_string   .= ' AND ' . $k . '>="' . $_between_value[0] . '" AND ' . $k . '<="' . $_between_value[1] . '" ';
            } else {
                $_temp_string .= ' AND ' . $k . $sqlCondition . ' "' . $sqlValue . '" ';
            }
        }
        }
       
    
        return $_temp_string;
    }
    //第二种情况,出问题了。
    $a=[
        [
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
        ],
        [
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
        ]
    ];
    //第一种情况,已经实现了
    $b=
        [
        [
        'bbb'=>'222',
        'ccc'=>'333',
        'ddd'=>['>=','444'],
        'eee'=>['BETWEEN','555|666']
        ]
        ];
    print_r(arrayToSqlStatement($b));

    ?>

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-14 10:52:08

    Fungsi itu sendiri terus memanggil dirinya sendiri. . Kategori yang sangat tidak terhingga. Main walau bagaimanapun anda mahu

    balas
    0
  • Batalbalas