note 74577 added to function.mysql-fetch-field

From: Date: Wed, 18 Apr 2007 05:43:51 +0000
Subject: note 74577 added to function.mysql-fetch-field
Groups: php.notes 
Request: Send a blank email to php-notes+get-125540@lists.php.net to get a copy of this message
I was working on a new project where I had to constantly retrieve data from registered users on a table called users. Often times I would need to retrieve data for a single user. I got tired of writing the same code over and over so I decided to create a function to do that and I thought I should share with people so if you have a similar problem you could use this function. Basically what this function does is it retrieves data for a single row from the database and returns it in the format of an array. <?php /************************************************ Arguments for the function: $fieldsarray: Array with the name of the fields to be included in the query $table: Name of the table where the query is going to be performed $unique: Name of the field that uniquely identifies the record (usually primary key) $uniquevalue: Value of the unique field for the desired record ************************************************/ function selectonerow($fieldsarray, $table, $unique, $uniquevalue) { //If value of $fieldsarray equals "*", use that value //Otherwise, turn $fieldsarray into a string if ($fieldsarray == "*") { $fields = $fieldsarray; } else { $fields = ""; foreach($fieldsarray as $currentfield) { $fields = $fields . $currentfield . ", "; } //removes the trailing ", " from the end of the string $fieldlen = strlen($fields) - 2; $fields = substr($fields, 0, $fieldlen); } //performs the query $result = mysql_query("SELECT $fields FROM $table WHERE $unique LIKE '$uniquevalue'") or die("Could not perform query - " . mysql_error()); $num_rows = mysql_num_rows($result); //if there's no such record with $uniquevalue id, returns NULL //otherwise create an array with the results if($num_rows == NULL) { return NULL; } else { $queryresult = array(); $num_fields = mysql_num_fields($result); $i = 0; while ($i < $num_fields) { $meta = mysql_fetch_field($result, $i); $queryresult[$meta->name] = mysql_result($result, 0, $meta->name); $i++; } return $queryresult; } } ?> Let's say you have a table 'users' with these fields: user_id, username, firstname, lastname, email, where user_id is the primary key. So if you want to perform a query for, let's say, user with user_id = 6, this is what you would need to do: <?php /*code to connect to the database*/ $userdata = selectonerow("*", "users", "user_id", "6"); ?> If only the fields 'firstname' and 'lastname' were desired to retrieve, this is what should be done: <?php /*code to connect to the database*/ $fields = array("firstname", "lastname"); $userdata = selectonerow($fields, "users", "user_id", "6"); ?> Hope this can be useful to somebody. ---- Server IP: 64.71.164.2 Probable Submitter: 24.117.184.248 ---- Manual Page -- http://www.php.net/manual/en/function.mysql-fetch-field.php Edit -- https://master.php.net/note/edit/74577 Del: integrated -- https://master.php.net/note/delete/74577/integrated Del: useless -- https://master.php.net/note/delete/74577/useless Del: bad code -- https://master.php.net/note/delete/74577/bad+code Del: spam -- https://master.php.net/note/delete/74577/spam Del: non-english -- https://master.php.net/note/delete/74577/non-english Del: in docs -- https://master.php.net/note/delete/74577/in+docs Del: other reasons-- https://master.php.net/note/delete/74577 Reject -- https://master.php.net/note/reject/74577 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#125540) next »