1--TEST-- 2mysqli_stmt_attr_get() 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once 'skipifconnectfailure.inc'; 8?> 9--FILE-- 10<?php 11 require 'table.inc'; 12 13 $valid_attr = array( 14 MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH, 15 MYSQLI_STMT_ATTR_CURSOR_TYPE, 16 ); 17 18 $stmt = mysqli_stmt_init($link); 19 mysqli_stmt_prepare($stmt, 'SELECT * FROM test'); 20 21 try { 22 mysqli_stmt_attr_get($stmt, -100); 23 } catch (\ValueError $e) { 24 echo $e->getMessage() . \PHP_EOL; 25 } 26 27 foreach ($valid_attr as $attr) { 28 try { 29 mysqli_stmt_attr_get($stmt, $attr); 30 } catch (Throwable $exception) { 31 echo $exception->getMessage() . "\n"; 32 } 33 } 34 35 $stmt->close(); 36 37 foreach ($valid_attr as $attr) { 38 try { 39 mysqli_stmt_attr_get($stmt, $attr); 40 } catch (Throwable $exception) { 41 echo $exception->getMessage() . "\n"; 42 } 43 } 44 45 mysqli_close($link); 46 print "done!"; 47?> 48--CLEAN-- 49<?php 50 require_once 'clean_table.inc'; 51?> 52--EXPECT-- 53mysqli_stmt_attr_get(): Argument #2 ($attribute) must be either MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH or MYSQLI_STMT_ATTR_CURSOR_TYPE 54mysqli_stmt object is already closed 55mysqli_stmt object is already closed 56done! 57