3v4l.org

run code in 300+ PHP versions simultaneously
<?php // 1件のコメントをINSERTする function insert_comment_single( $comment, $is_table_lock ){ try { $dbh = db_open(); if ( $is_table_lock ) { // テーブルロックを実行 $sql = 'LOCK TABLES tbl_comments WRITE, tbl_relations WRITE, tbl_tags WRITE'; $db->query( $sql ); } // INSERTする $sql = 'INSERT ...'; $db->query( $sql ); // エラー確認 if ( 何かエラーなら ) throw new Exception('何かエラーです'); // エラーなければコミット if ( $is_table_lock ) $dbh->commit(); // 戻り値 $result = [ 'status' => 'ok', 'inserted_id' => 1 ]; } catch (Exception $e) { // エラーならロールバック if ( $is_table_lock ) $dbh->rollback(); // 戻り値 $result = [ 'status' => 'error', 'message' => $e->getMessage() ]; } return $result; } // 複数のコメントをINSERTする function insert_comment_multiple( $comment_arr, $is_table_lock ){ try { $dbh = db_open(); if ( $is_table_lock ) { // テーブルロックを実行 $sql = 'LOCK TABLES tbl_comments WRITE, tbl_relations WRITE, tbl_tags WRITE'; $db->query($sql); // 当関数でロックしたので single の方ではロックしない $is_table_lock2 = false; } // ループ結果 $inserted_arr = []; // single の結果 $error_index_arr = []; // エラー番号 // ループで single を実行してINSERTする foreach( $comment_arr as $index => $comment ){ $inserted = insert_comment_single( $comment, $is_table_lock2 ); // エラー番号をセット if ( $inserted['status'] === 'error' ) $error_index_arr[] = $index; // single の結果をセット $inserted_arr[] = $inserted; } // 当関数でテーブルロックした場合、1件でもエラーのときは throw でロールバック if ( $is_table_lock && !empty($error_index_arr) ) throw new Exception( implode(',',$error_index_arr) . 'でエラー'); // エラーなければコミット if ( $is_table_lock ) $dbh->commit(); // 戻り値 $result = [ 'status' =>'ok', 'inserted_arr' => $inserted_arr ]; // 当関数でテーブルロックしない場合、エラー番号を入れる if ( !$is_table_lock && !empty($error_index_arr) ) $result['error_index_arr'] = $error_index_arr; } catch (Exception $e) { // エラーならロールバック if ( $is_table_lock ) $dbh->rollback(); // 戻り値 $result = [ 'status' => 'error', 'inserted_arr' => $inserted_arr, 'message' => $e->getMessage() ]; } return $result; }
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14, 8.5.0
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.
Output for 8.3.28
/bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28)
Process exited with code 1.

preferences:
162.81 ms | 407 KiB | 5 Q