note 50817 added to function.mysql-query
| From: | marc at droletmarc dot com | Date: | Thu, 10 Mar 2005 18:11:18 +0000 |
| Subject: | note 50817 added to function.mysql-query | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-86215@lists.php.net to get a copy of this message | ||
modification to the safe_query function previously posted by ingemar
- add possibility to pass a variable or an array
- add query_error_log management
function safe_query($query, $values) {
$query_parts = preg_split("/\?/", $query);
$safe_query = array_shift($query_parts);
$needed_values = count($query_parts);
if ($needed_values) {
if (is_array($values)) {
foreach ($values as $data) { $safe_query .=
mysql_escape_string($data).array_shift($query_parts); }
} else { $safe_query .=
mysql_escape_string($values).array_shift($query_parts); }
if (count($query_parts)) {
$value_sent = (is_array($values)) ? count($values) : 1;
$cf = fopen(QUERY_ERROR_LOG, "a");
flock( $cf, LOCK_EX );
fputs($cf, date("Y/m/d H:i:s").' --
'.$GLOBALS['PHP_SELF'].' -- '.mysql_error()."\n");
fputs($cf, 'Query '.$query.' needs
'.$needed_values.' values, you only sent '.$value_sent."\n\n");
flock( $cf, LOCK_UN );
fclose($cf);
die('Une erreure est survenue. S.V.P. faire parvenir un
message à support@mysite.com afin de nous informer du problème. Merci');
}
}
if (!$q_result = mysql_query($safe_query)) {
$cf = fopen(QUERY_ERROR_LOG, "a");
flock( $cf, LOCK_EX );
fputs($cf, date("Y/m/d H:i:s").' --
'.$GLOBALS['PHP_SELF'].' -- '.mysql_error()."\n");
fputs($cf, $safe_query."\n\n");
flock( $cf, LOCK_UN );
fclose($cf);
die('Une erreure est survenue. S.V.P. faire parvenir un message à
support@mysite.com afin de nous informer du problème. Merci');
}
return $q_result;
}
QUERY_ERROR_LOG is a define value;
define('QUERY_ERROR_LOG','/home/user/logs/query_error_log.txt');
use the fonction this way:
$query = "SELECT * FROM a WHERE b='?' AND c='?'";
$values = array(1,2);
$result = safe_query($query, $values);
or this way:
$query = "SELECT * FROM a WHERE b='?'";
$result = safe_query($query, 1);
----
Manual Page -- http://www.php.net/manual/en/function.mysql-query.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+50817
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+50817&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+50817&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+50817&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+50817&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+50817&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+50817&report=yes
Search -- http://master.php.net/manage/user-notes.php