2012-04-23 12 views
0

私は結果を取得するために、同じページを何度も繰り返し使用しています。私はこのクエリのための関数を作りたいと思います。mysqlの結果を使ってPHPで関数を作る方法は?

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

どのように機能を呼び出すのですか?

+0

他に何かをする前に、あなたのコードに大きな[SQLインジェクション](http://xkcd.com/327/)の脆弱性を修正する必要があります。 –

+0

何度も同じクエリを作成している場合は、PDOプリペアドステートメントを使用せずに、必要なときに実行するだけです。それはより良いアプローチです。 – itachi

+0

ちょっと助けにならないからちょっとだけ。ページ間でリソースを渡すことはできません。 –

答えて

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( 'localhostの'、 '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

これは良いアイデアですが、最初にすべてのあなたは、特定のより道より頻繁に、さまざまなクエリを実行する必要があるとして、(クエリを実行する関数を作成する必要がありますすることによって機能1)

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); 
} 
012を求めているこの特定の関数を作成することができます
関連する問題