2022-03-27 01:55:57 +09:00
< ? php
2022-10-25 18:09:58 +09:00
require_once ( " ../config.php " );
2022-03-27 02:41:32 +09:00
/* val
*
2022-10-25 18:09:58 +09:00
* select => [ " var1 " , " var2 " ... ]
* insert | update | where => [ " key1 " => " value1 " , " key2 " => " value2 " ... ]
* order => [ " var " , " asc " | " desc " ]
2022-03-27 02:41:32 +09:00
* limit => int
* */
2022-10-25 18:09:58 +09:00
function lolidb ( string $table , array $val , string $mode = " select " ) : array | bool {
2022-03-27 02:41:32 +09:00
// モードは違う場合、やめる。If the mode is wrong, stop.
2022-10-25 18:09:58 +09:00
if ( $mode != " select " && $mode != " one " && $mode != " insert " && $mode != " update " && $mode != " delete " ) {
2022-03-27 02:41:32 +09:00
dd ( " モードは「select」、「one」、「insert」、「update」、「delete」です。 \n Mode should be \" select \" , \" one \" , \" insert \" , \" update \" , or \" delete \" . " );
2022-03-27 01:55:57 +09:00
return false ;
}
2022-03-27 02:41:32 +09:00
// 順のチェック。Check order.
2022-10-25 18:09:58 +09:00
if ( isset ( $val [ " order " ])) {
2022-03-27 02:41:32 +09:00
// selectかoneじゃない場合。If not select or one.
2022-10-25 18:09:58 +09:00
if ( $mode !== " select " || $mode !== " one " ) {
2022-03-27 02:41:32 +09:00
dd ( " 「order」は「select」又は「one」のみで使えます。 \n \" order \" can only be used with \" select \" or \" one \" . " );
2022-03-27 01:55:57 +09:00
return false ;
}
2022-03-27 02:41:32 +09:00
// 複数の場合。If multiple.
2022-10-25 18:09:58 +09:00
if ( count ( $val [ " order " ] > 1 )) {
2022-03-27 02:41:32 +09:00
dd ( " 複数「order」は未対応です。 \n Multiple \" order \" is not yet supported. " );
return false ;
}
2022-03-27 01:55:57 +09:00
2022-10-25 18:09:58 +09:00
// ascかdescかどうか。Whether it"s asc or desc.
foreach ( $val [ " order " ] as $k => $v ) {
if ( $v !== " asc " && $v !== " desc " ) {
2022-03-27 02:41:32 +09:00
dd ( " 「order」は「asc」又は「desc」です。 \n \" order \" should be \" asc \" or \" desc \" . " );
return false ;
}
}
2022-03-27 01:55:57 +09:00
}
2022-03-27 02:41:32 +09:00
// 限界のチェック。Check limit.
2022-10-25 18:09:58 +09:00
if (( $mode === " select " || $mode === " one " ) && isset ( $val [ " limit " ])) {
2022-03-27 02:41:32 +09:00
// oneの場合。If one.
2022-10-25 18:09:58 +09:00
if ( $mode === " one " ) {
2022-03-27 02:41:32 +09:00
dd ( " 「one」の場合、「limit」はいつでも「1」です。「limit」は1以上は必要の場合、「select」を使って下さい。 \n In case of \" one \" , \" limit \" is always \" 1 \" . If \" limit \" needs to be more than \" 1 \" , please use \" select \" . " );
return false ;
2022-03-27 01:55:57 +09:00
}
2022-03-27 02:41:32 +09:00
// selectじゃない場合。If not select.
2022-10-25 18:09:58 +09:00
else if ( $mode !== " select " ) {
2022-03-27 02:41:32 +09:00
dd ( " 「insert」、「update」及び「delete」で、「limit」を使えません。 \n \" limit \" cannot be used with \" insert \" , \" update \" , and \" delete \" . " );
return false ;
2022-03-27 01:55:57 +09:00
}
}
2022-03-27 02:41:32 +09:00
// insertの場合。In case of insert.
2022-10-25 18:09:58 +09:00
if ( $mode === " insert " && ! isset ( $val [ " insert " ])) {
2022-03-27 02:41:32 +09:00
dd ( " 「insert」モードの場合、「insert」値は必須です。 \n In case of \" insert \" mode, \" insert \" value is necessary. " );
return false ;
2022-03-27 01:55:57 +09:00
}
2022-03-27 02:41:32 +09:00
// updateの場合。In case of update.
2022-10-25 18:09:58 +09:00
if ( $mode === " update " && ! isset ( $val [ " update " ])) {
2022-03-27 02:41:32 +09:00
dd ( " 「update」モードの場合、「update」値は必須です。 \n In case of \" update \" mode, \" update \" value is necessary. " );
return false ;
2022-03-27 01:55:57 +09:00
}
2022-03-27 02:41:32 +09:00
// MySQLiの創作。Creation of MySQLi.
$mysqli = mysqli_connect ( DB_HOST , DB_USER , DB_PASS , DB_TABLE );
$result = null ;
2022-10-25 18:09:58 +09:00
if ( $mode == " select " || $mode == " one " ) {
2022-03-27 02:41:32 +09:00
// select値がなければ、全部を選択する。If there is no select value, select everything.
2022-10-25 18:09:58 +09:00
if ( ! isset ( $val [ " select " ])) {
$val [ " select " ] = [ " * " ];
2022-03-27 01:55:57 +09:00
}
2022-10-25 18:09:58 +09:00
$query = " SELECT " . $val [ " select " ] . " FROM " . $table ;
2022-03-27 02:41:32 +09:00
2022-10-25 18:09:58 +09:00
if ( isset ( $val [ " where " ])) {
$query .= " WHERE " ;
foreach ( $val [ " where " ] as $k => $v ) {
$query .= $k . " = " . $v ;
if ( $k !== array_key_last ( $val [ " where " ])) $query .= " AND " ;
2022-03-27 01:55:57 +09:00
}
}
2022-10-25 18:09:58 +09:00
if ( isset ( $val [ " order " ])) {
$query .= " ORDER BY " ;
foreach ( $val [ " order " ] as $k => $v ) {
2022-03-27 02:41:32 +09:00
$query .= $k ;
2022-10-25 18:09:58 +09:00
$query .= " " . strtoupper ( $v );
2022-03-27 01:55:57 +09:00
}
}
2022-10-25 18:09:58 +09:00
if ( $mode == " one " ) {
$query .= " LIMIT 1 " ;
2022-03-27 02:41:32 +09:00
}
else {
2022-10-25 18:09:58 +09:00
if ( isset ( $val [ " limit " ])) {
$query .= " LIMIT " . ( int ) $val [ " limit " ];
2022-03-27 02:41:32 +09:00
}
}
2022-03-27 01:55:57 +09:00
2022-10-25 18:09:58 +09:00
$result = mysqli_query ( $mysqli , $query . " ; " );
2022-03-27 02:41:32 +09:00
$row = mysqli_fetch_assoc ( $result );
}
else {
2022-10-25 18:09:58 +09:00
if ( $mode == " insert " ) {
$query .= " INSERT INTO " . $table . " ( " ;
foreach ( $val [ " insert " ] as $k => $v ) {
2022-03-27 02:41:32 +09:00
$query .= $k ;
2022-10-25 18:09:58 +09:00
if ( $k !== array_key_last ( $val [ " insert " ])) {
$query .= " , " ;
2022-03-27 02:41:32 +09:00
}
}
2022-10-25 18:09:58 +09:00
$query .= " ) VALUES ( " ;
foreach ( $val [ " insert " ] as $k => $v ) {
2022-03-27 02:41:32 +09:00
$query .= $v ;
2022-10-25 18:09:58 +09:00
if ( $k !== array_key_last ( $val [ " insert " ])) {
$query .= " , " ;
2022-03-27 02:41:32 +09:00
}
}
2022-10-25 18:09:58 +09:00
$query .= " ) " ;
2022-03-27 02:41:32 +09:00
}
2022-10-25 18:09:58 +09:00
else if ( $mode == " update " ) {
$query .= " UPDATE " . $table . " SET " ;
foreach ( $val [ " update " ] as $k => $v ) {
$query .= $k . " = " . $v ;
if ( $k !== array_key_last ( $val [ " update " ])) {
$query .= " , " ;
2022-03-27 02:41:32 +09:00
}
}
2022-03-27 01:55:57 +09:00
2022-10-25 18:09:58 +09:00
if ( isset ( $val [ " where " ])) {
$query .= " WHERE " ;
foreach ( $val [ " where " ] as $k => $v ) {
$query .= $k . " = " . $v ;
if ( $k !== array_key_last ( $val [ " where " ])) {
$query .= " AND " ;
2022-03-27 02:41:32 +09:00
}
}
}
}
2022-10-25 18:09:58 +09:00
else if ( $mode == " delete " ) {
$query .= " DELETE FROM " . $table ;
if ( isset ( $val [ " where " ])) {
$query .= " WHERE " ;
foreach ( $val [ " where " ] as $k => $v ) {
$query .= $k . " = " . $v ;
if ( $k !== array_key_last ( $val [ " where " ])) {
$query .= " AND " ;
2022-03-27 02:41:32 +09:00
}
}
}
}
2022-03-27 01:55:57 +09:00
2022-10-25 18:09:58 +09:00
$stmt = mysqli_prepare ( $mysqli , $query . " ; " );
2022-03-27 02:41:32 +09:00
}
2022-03-27 01:55:57 +09:00
2022-03-27 02:41:32 +09:00
return $row ;
2022-03-27 01:55:57 +09:00
}
?>