1--TEST-- 2mysqli_stmt_get_result() - SHOW, DESCRIBE, EXPLAIN 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8 9if (!function_exists('mysqli_stmt_get_result')) 10 die('skip mysqli_stmt_get_result not available'); 11?> 12--FILE-- 13<?php 14 /* 15 NOTE: no datatype tests here! This is done by 16 mysqli_stmt_bind_result.phpt already. Restrict 17 this test case to the basics. 18 */ 19 require('table.inc'); 20 21 if (!$stmt = mysqli_stmt_init($link)) 22 printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 23 24 if (mysqli_query($link, 'PREPARE mystmt FROM "SHOW ENGINES"')) { 25 mysqli_query($link, 'DEALLOCATE PREPARE mystmt'); 26 27 if (!$stmt->prepare('SHOW ENGINES') || 28 !$stmt->execute()) 29 printf("[002] [%d] %s\n", $stmt->errno, $stmt->error); 30 31 if (!$res = $stmt->get_result()) 32 printf("[003] [%d] %s\n", $stmt->errno, $stmt->error); 33 34 $engines = mysqli_fetch_all($res, MYSQLI_NUM); 35 if (empty($engines)) { 36 printf("[004] It is very unlikely that SHOW ENGINES returns no data, check manually\n"); 37 } else { 38 $found = false; 39 foreach ($engines as $k => $engine) 40 foreach ($engine as $k => $v) 41 if (stristr('MyISAM', $v)) { 42 $found = true; 43 break; 44 } 45 if (!$found) 46 printf("[005] It is very unlikely that SHOW ENGINES does not show MyISAM, check manually\n"); 47 } 48 mysqli_free_result($res); 49 } 50 51 if (mysqli_query($link, 'PREPARE mystmt FROM "DESCRIBE test id"')) { 52 mysqli_query($link, 'DEALLOCATE PREPARE mystmt'); 53 54 if (!$stmt->prepare('DESCRIBE test id') || 55 !$stmt->execute()) 56 printf("[006] [%d] %s\n", $stmt->errno, $stmt->error); 57 58 if (!$res = $stmt->get_result()) 59 printf("[007] [%d] %s\n", $stmt->errno, $stmt->error); 60 61 $description = mysqli_fetch_assoc($res); 62 if ($description['Field'] != 'id') { 63 printf("[008] Returned data seems wrong, [%d] %s\n", 64 mysqli_errno($link), mysqli_error($link)); 65 var_dump($description); 66 } 67 mysqli_free_result($res); 68 } 69 70 if (mysqli_query($link, 'PREPARE mystmt FROM "EXPLAIN SELECT id FROM test"')) { 71 mysqli_query($link, 'DEALLOCATE PREPARE mystmt'); 72 73 if (!$stmt->prepare('EXPLAIN SELECT id FROM test') || 74 !$stmt->execute()) 75 printf("[009] [%d] %s\n", $stmt->errno, $stmt->error); 76 77 if (!$res = $stmt->get_result()) 78 printf("[010] [%d] %s\n", $stmt->errno, $stmt->error); 79 80 $tmp = mysqli_fetch_assoc($res); 81 if (empty($tmp)) 82 printf("[011] Empty EXPLAIN result set seems wrong, check manually, [%d] %s\n", 83 mysqli_errno($link), mysqli_error($link)); 84 mysqli_free_result($res); 85 } 86 mysqli_close($link); 87 88 print "done!"; 89?> 90--CLEAN-- 91<?php 92 require_once("clean_table.inc"); 93?> 94--EXPECTF-- 95done!