Это хорошая идея, но в первую очередь вы должны создать функцию для запуска запросов (как вы должны запускать различные запросы способ чаще, чем конкретный один)
function dbget() {
/*
easy to use yet SAFE way of handling mysql queries.
usage: dbget($mode, $query, $param1, $param2,...);
$mode - "dimension" of result:
0 - resource
1 - scalar
2 - row
3 - array of rows
every variable in the query have to be substituted with a placeholder
while the avtual variable have to be listed in the function params
in the same order as placeholders have in the query.
use %d placeholder for the integer values and %s for anything else
*/
$args = func_get_args();
if (count($args) < 2) {
trigger_error("dbget: too few arguments");
return false;
}
$mode = array_shift($args);
$query = array_shift($args);
$query = str_replace("%s","'%s'",$query);
foreach ($args as $key => $val) {
$args[$key] = mysql_real_escape_string($val);
}
$query = vsprintf($query, $args);
if (!$query) return false;
$res = mysql_query($query);
if (!$res) {
trigger_error("dbget: ".mysql_error()." in ".$query);
return false;
}
if ($mode === 0) return $res;
if ($mode === 1) {
if ($row = mysql_fetch_row($res)) return $row[0];
else return NULL;
}
$a = array();
if ($mode === 2) {
if ($row = mysql_fetch_assoc($res)) return $row;
}
if ($mode === 3) {
while($row = mysql_fetch_assoc($res)) $a[]=$row;
}
return $a;
}
, то вы можете создать эту конкретную функцию, которую вы просите
function get_name_by_id($id){
return dbget("SELECT name FROM tablename where id=%d",$id);
}
Прежде чем делать что-либо еще, вам необходимо исправить уязвимость [SQL injection] (http://xkcd.com/327/) в вашем коде. –
Если вы делаете один и тот же запрос снова и снова, почему бы не использовать подготовленный отчет PDO и просто выполнять его, когда вам нужно? это лучший подход. – itachi
@itachi просто потому, что это не поможет. вы не можете передавать ресурсы между страницами –