私は結果を取得するために、同じページを何度も繰り返し使用しています。私はこのクエリのための関数を作りたいと思います。mysqlの結果を使ってPHPで関数を作る方法は?
$result = mysql_query(" SELECT name FROM tablename where id= '$row[name_id]'");
$row = mysql_fetch_array($result);
echo $row ['name'];
どのように機能を呼び出すのですか?
私は結果を取得するために、同じページを何度も繰り返し使用しています。私はこのクエリのための関数を作りたいと思います。mysqlの結果を使ってPHPで関数を作る方法は?
$result = mysql_query(" SELECT name FROM tablename where id= '$row[name_id]'");
$row = mysql_fetch_array($result);
echo $row ['name'];
どのように機能を呼び出すのですか?
サンプルクラス格納さを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..
?>
おそらく、データベース接続を解析する必要があるだけでなく
$ 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] また、それはおそらく、クラス内の関数をラップするために役立つだろう。
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
これは良いアイデアですが、最初にすべてのあなたは、特定のより道より頻繁に、さまざまなクエリを実行する必要があるとして、(クエリを実行する関数を作成する必要がありますすることによって機能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を求めているこの特定の関数を作成することができます
他に何かをする前に、あなたのコードに大きな[SQLインジェクション](http://xkcd.com/327/)の脆弱性を修正する必要があります。 –
何度も同じクエリを作成している場合は、PDOプリペアドステートメントを使用せずに、必要なときに実行するだけです。それはより良いアプローチです。 – itachi
ちょっと助けにならないからちょっとだけ。ページ間でリソースを渡すことはできません。 –