2012-04-23 2 views
0

Я использую тот же запрос снова и снова на разных страницах между ними, чтобы получить результат. Я хочу сделать функцию для этого запроса.Как сделать функцию в php с результатом mysql?

$result = mysql_query(" SELECT name FROM tablename where id= '$row[name_id]'"); 
$row = mysql_fetch_array($result); 
echo $row ['name']; 

Как сделать и как вызвать функцию?

+0

Прежде чем делать что-либо еще, вам необходимо исправить уязвимость [SQL injection] (http://xkcd.com/327/) в вашем коде. –

+0

Если вы делаете один и тот же запрос снова и снова, почему бы не использовать подготовленный отчет PDO и просто выполнять его, когда вам нужно? это лучший подход. – itachi

+0

@itachi просто потому, что это не поможет. вы не можете передавать ресурсы между страницами –

ответ

0

образец класса хранится sample.php

class sample 
{ 

    function getName(id) 
    { 
     $result = mysql_query("SELECT name FROM tablename where id='$id'"); 
     $row = mysql_fetch_array($result); 
     return $row ['name']; 
    } 
} 

использование страницы включают sample.php, а затем создать объект, а затем вызвать функцию GetName().

<?php 
include "db.class.php"; 
include "sample.php"; 
$ob=new sample();   //create object for smaple class 
$id=12; 
$name=$ob->getName($id); //call function.. 
?> 
-1

Вы, вероятно, следует разобрать соединение с базой данных, а также

$ database_connection = mysql_connect ('локальный', 'mysql_user', 'mysql_password');

function get_row_by_id($id, $database_link){ 
    $result = mysql_query("SELECT name FROM tablename where id= '{$id}"); 
    return mysql_fetch_array($result); 
} 

Использование

$row = get_row_by_id(5, $database_connection); 

[EDIT] Кроме того, вероятно, поможет обернуть функцию в классе.

-1
function getName($id){ 
    $result = mysql_query("SELECT name FROM tablename where id= '$row[name_id]'"); 
    $row = mysql_fetch_array($result); 
    return $row ['name']; 
} 

вызов функции по

$id = 1; //id number 
$name = getName($id); 
echo $name; //display name 
+0

да мне нужно это .... спасибо – Deved

+0

Без проблем @ user1239494. Рад помочь, хотя я не знаю, кто мне дал мне отрицательный момент, HA! hahaha – SuperNoob

+0

Я не могу дать, потому что у меня нет привилегированных ... – Deved

0

Это хорошая идея, но в первую очередь вы должны создать функцию для запуска запросов (как вы должны запускать различные запросы способ чаще, чем конкретный один)

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); 
} 
Смежные вопросы