0

結果を取得するために、その間の異なるページで同じクエリを何度も使用しています。このクエリの関数を作成したいと思います。

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

関数の作り方と呼び出し方は?

4

4 に答える 4

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); 
}
于 2012-04-23T07:41:08.547 に答える
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']; 
    }
}

page include 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..
?>
于 2012-04-23T07:17:44.120 に答える
-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
于 2012-04-23T07:40:33.053 に答える
-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);

[編集] また、関数をクラスでラップするとおそらく役立つでしょう。

于 2012-04-23T07:18:51.657 に答える