2004-12-12 03:51:51 +00:00
|
|
|
<?php
|
2005-01-14 05:28:58 +00:00
|
|
|
$hAppdbLink = null;
|
|
|
|
|
$hBugzillaLink = null;
|
|
|
|
|
|
2005-01-12 02:43:52 +00:00
|
|
|
function query_appdb($sQuery,$sComment="")
|
2004-03-15 16:22:00 +00:00
|
|
|
{
|
2005-01-12 02:43:52 +00:00
|
|
|
global $hAppdbLink;
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2005-01-14 05:28:58 +00:00
|
|
|
if(!is_resource($hAppdbLink))
|
2004-12-12 03:51:51 +00:00
|
|
|
{
|
2005-01-14 16:05:14 +00:00
|
|
|
// The last argument makes sure we are really opening a new connection
|
|
|
|
|
$hAppdbLink = mysql_connect(APPS_DBHOST, APPS_DBUSER, APPS_DBPASS,true);
|
|
|
|
|
mysql_select_db(APPS_DB, $hAppdbLink);
|
2004-12-12 03:51:51 +00:00
|
|
|
}
|
2005-01-14 16:05:14 +00:00
|
|
|
|
2005-01-12 02:43:52 +00:00
|
|
|
$hResult = mysql_query($sQuery, $hAppdbLink);
|
2005-01-12 17:29:04 +00:00
|
|
|
if(!$hResult) query_error($sQuery, $sComment);
|
2004-12-29 03:36:57 +00:00
|
|
|
return $hResult;
|
2004-03-15 16:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
2006-06-24 04:20:32 +00:00
|
|
|
/*
|
|
|
|
|
* Wildcard Rules
|
|
|
|
|
* SCALAR (?) => 'original string quoted'
|
|
|
|
|
* OPAQUE (&) => 'string from file quoted'
|
|
|
|
|
* MISC (~) => original string (left 'as-is')
|
|
|
|
|
*
|
|
|
|
|
* NOTE: These rules convienently match those for Pear DB
|
|
|
|
|
*
|
|
|
|
|
* MySQL Prepare Function
|
|
|
|
|
* By: Kage (Alex)
|
|
|
|
|
* KageKonjou@GMail.com
|
|
|
|
|
* http://us3.php.net/manual/en/function.mysql-query.php#53400
|
|
|
|
|
*
|
|
|
|
|
* Modified by CMM 20060622
|
|
|
|
|
*
|
|
|
|
|
* Values are mysql_real_escape_string()'d to prevent against injection attacks
|
|
|
|
|
* See http://php.net/mysql_real_escape_string for more information about why this is the case
|
|
|
|
|
*
|
2006-07-04 06:19:06 +00:00
|
|
|
* Usage:
|
|
|
|
|
* $hResult = query_parameters("Select * from mytable where userid = '?'",
|
|
|
|
|
* $iUserId);
|
|
|
|
|
*
|
|
|
|
|
* Note:
|
|
|
|
|
* Ensure that all variables are passed as parameters to query_parameters()
|
|
|
|
|
* to ensure that sql injection attacks are prevented against
|
|
|
|
|
*
|
2006-06-24 04:20:32 +00:00
|
|
|
*/
|
|
|
|
|
function query_parameters()
|
|
|
|
|
{
|
|
|
|
|
global $hAppdbLink;
|
|
|
|
|
|
|
|
|
|
if(!is_resource($hAppdbLink))
|
|
|
|
|
{
|
|
|
|
|
// The last argument makes sure we are really opening a new connection
|
|
|
|
|
$hAppdbLink = mysql_connect(APPS_DBHOST, APPS_DBUSER, APPS_DBPASS,true);
|
|
|
|
|
mysql_select_db(APPS_DB, $hAppdbLink);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data = func_get_args();
|
|
|
|
|
$query = $data[0];
|
2006-06-27 16:39:40 +00:00
|
|
|
$tokens = split("[&?~]", $query); /* NOTE: no need to escape characters inside of [] in regex */
|
2006-06-24 04:20:32 +00:00
|
|
|
$preparedquery = $tokens[0];
|
|
|
|
|
$count = strlen($tokens[0]);
|
|
|
|
|
|
2006-06-27 16:39:40 +00:00
|
|
|
/* do we have the correct number of tokens to the number of parameters provided? */
|
|
|
|
|
if(count($tokens) != count($data))
|
|
|
|
|
return NULL; /* count mismatch, return NULL */
|
|
|
|
|
|
2006-06-24 04:20:32 +00:00
|
|
|
for ($i=1; $i < count($tokens); $i++)
|
|
|
|
|
{
|
|
|
|
|
$char = substr($query, $count, 1);
|
|
|
|
|
$count += (strlen($tokens[$i])+1);
|
|
|
|
|
if ($char == "&")
|
|
|
|
|
{
|
|
|
|
|
$fp = @fopen($data[$i], 'r');
|
|
|
|
|
$pdata = "";
|
|
|
|
|
if ($fp)
|
|
|
|
|
{
|
|
|
|
|
while (($buf = fread($fp, 4096)) != false)
|
|
|
|
|
{
|
|
|
|
|
$pdata .= $buf;
|
|
|
|
|
}
|
|
|
|
|
fclose($fp);
|
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
|
{
|
|
|
|
|
$pdata = &$data[$i];
|
|
|
|
|
}
|
|
|
|
|
$preparedquery .= ($char != "~" ? mysql_real_escape_string($pdata) : $pdata);
|
|
|
|
|
$preparedquery .= $tokens[$i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return query_appdb($preparedquery);
|
|
|
|
|
}
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2005-01-12 02:43:52 +00:00
|
|
|
function query_bugzilladb($sQuery,$sComment="")
|
|
|
|
|
{
|
|
|
|
|
global $hBugzillaLink;
|
|
|
|
|
|
2005-01-14 05:28:58 +00:00
|
|
|
if(!is_resource($hBugzillaLink))
|
2004-12-12 03:51:51 +00:00
|
|
|
{
|
2005-01-14 16:05:14 +00:00
|
|
|
// The last argument makes sure we are really opening a new connection
|
|
|
|
|
$hBugzillaLink = mysql_connect(BUGZILLA_DBHOST, BUGZILLA_DBUSER, BUGZILLA_DBPASS,true);
|
2005-08-01 20:53:44 +00:00
|
|
|
if(!$hBugzillaLink) return;
|
2005-01-14 16:05:14 +00:00
|
|
|
mysql_select_db(BUGZILLA_DB, $hBugzillaLink);
|
2004-12-12 03:51:51 +00:00
|
|
|
}
|
2005-01-14 16:05:14 +00:00
|
|
|
|
2005-01-12 02:43:52 +00:00
|
|
|
$hResult = mysql_query($sQuery, $hBugzillaLink);
|
2005-01-12 17:29:04 +00:00
|
|
|
if(!$hResult) query_error($sQuery, $sComment);
|
2004-12-29 03:36:57 +00:00
|
|
|
return $hResult;
|
2004-03-15 16:22:00 +00:00
|
|
|
}
|
2004-12-29 18:42:34 +00:00
|
|
|
|
2005-01-12 02:43:52 +00:00
|
|
|
|
2005-01-12 17:29:04 +00:00
|
|
|
function query_error($sQuery, $sComment="")
|
2005-01-12 02:43:52 +00:00
|
|
|
{
|
|
|
|
|
$sStatusMessage = "<p><b>Database Error!</b><br />";
|
2005-01-14 05:28:58 +00:00
|
|
|
$sStatusMessage .= "Query: ".$sQuery."<br />";
|
2005-01-12 02:43:52 +00:00
|
|
|
$sStatusMessage .= $sComment ? $sComment."<br />" : "";
|
|
|
|
|
$sStatusMessage .= mysql_error()."</p>\n";
|
|
|
|
|
addmsg($sStatusMessage, "red");
|
|
|
|
|
}
|
|
|
|
|
|
2004-03-15 16:22:00 +00:00
|
|
|
?>
|