note 88714 added to function.mysql-fetch-field

From: Date: Wed, 04 Feb 2009 16:16:14 +0000
Subject: note 88714 added to function.mysql-fetch-field
Groups: php.notes 
Request: Send a blank email to php-notes+get-150206@lists.php.net to get a copy of this message
XML generation. Bit of a security risk allowing parameters to select db and table on live server (unless user is restricted or replace the $_GET with fixed value.) Outputs xml with standard format for <config> part to generate forms in flash. <?php // // makeXML.php?db=dbname&table=tablename // set_time_limit(300); $host = "localhost"; $user = "root"; $password = "root"; $database = $_GET['db']; $table = $_GET['table']; mysql_connect($host,$user,$password); @mysql_select_db($database) or die( "Unable to select database"); $querytext="SELECT * FROM ".$table; $result=mysql_query($querytext); if ($result){ $num=mysql_num_rows($result); }else{ $num=0; } ?> <?php header('Content-Type: text/xml'); echo "<?xml version='1.0'?>"; if ($num > 0){ ?> <<?php echo $table?>> <config> <?php // Display number of fields echo "<numFields>".mysql_num_fields($result)."</numFields>"; $i = 0; $primaryKey = ""; $nameArray = array(); $maxLengthArray = array(); $typeArray = array(); while ($i < mysql_num_fields($result)) { $meta = mysql_fetch_field($result, $i); $nameArray[$i] = $meta->name; $maxLengthArray[$i] = $meta->max_length; $typeArray[$i] = $meta->type; if ($meta->primary_key){ $primaryKey = $meta->name; } $i++; } $i = 0; echo "<fieldNames>"; while ($i < count($nameArray)) { echo "<field".$i.">".$nameArray[$i]."</field".$i.">"; $i++; } echo "</fieldNames>"; $i = 0; echo "<fieldMaxLength>"; while ($i < count($maxLengthArray)) { echo "<field".$i.">".$maxLengthArray[$i]."</field".$i.">"; $i++; } echo "</fieldMaxLength>"; $i = 0; echo "<fieldType>"; while ($i < count($typeArray)) { echo "<field".$i.">".$typeArray[$i]."</field".$i.">"; $i++; } echo "</fieldType>"; ?> <primaryKey><?php echo $primaryKey?></primaryKey> <numRecords><?php echo $num?></numRecords> </config> <?php $i=0; while ($i < $num) { $ID=mysql_result($result,$i,"ID"); $value=mysql_result($result,$i,"value"); $title=mysql_result($result,$i,"title"); $description=mysql_result($result,$i,"description"); ?> <row> <ID><?php echo $ID?></ID> <weighting><?php echo $value?></weighting> <title><?php echo $title?></title> <description><?php echo $description?></description> </row> <?php $i = $i + 1; } ?> </<?php echo $table?>> <?php } ?> ---- Server IP: 212.63.193.10 Probable Submitter: 207.218.42.62 ---- Manual Page -- http://www.php.net/manual/en/function.mysql-fetch-field.php Edit -- https://master.php.net/note/edit/88714 Del: integrated -- https://master.php.net/note/delete/88714/integrated Del: useless -- https://master.php.net/note/delete/88714/useless Del: bad code -- https://master.php.net/note/delete/88714/bad+code Del: spam -- https://master.php.net/note/delete/88714/spam Del: non-english -- https://master.php.net/note/delete/88714/non-english Del: in docs -- https://master.php.net/note/delete/88714/in+docs Del: other reasons-- https://master.php.net/note/delete/88714 Reject -- https://master.php.net/note/reject/88714 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#150206) next »