php pelbagai dimensi ke sql
phpcn_u1582
phpcn_u1582 2017-06-14 10:50:08
0
2
872

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_u1582
phpcn_u1582

membalas semua(2)
曾经蜡笔没有小新

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

?>

给我你的怀抱

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!