PHP:从db更容易/更简单的方式抓住这个?

时间:2010-09-15 07:57:02

标签: php mysql

有什么方法可以让我更轻松:

$query = mysql_query("SELECT full_name FROM users WHERE id = '$show[uID]'");
$row = mysql_fetch_array($query);
echo $row["full_name"] . " ";

因为我只需要获取full_name,然后我为fetch_array创建一个var,所以,有没有办法让这个更简单和回声?有一些关于list(),但我不确定..

6 个答案:

答案 0 :(得分:2)

忽略可能的安全漏洞和DAL的有用性(请参阅@ deceze的answer),我建议使用mysql_result()代替mysql_fetch_assoc()(或* _array()或其他) :

$query = mysql_query("SELECT full_name FROM users WHERE id = '$show[uID]'");
$fullName = mysql_result($query, 0);
echo $fullName . " ";

不容易本身,但应该更符合查询的意图(在一个行中获取一个字段)。< / p>

答案 1 :(得分:1)

抽象这一点的唯一方法就是使用DAL和/或ORM Doctrine或{ {3}},无论如何你应该这样做。

答案 2 :(得分:0)

可能不容易,但更安全:

$id = mysql_real_escape_string($show['uID']);
$query = mysql_query("SELECT `full_name` FROM `users` WHERE id = '".$id."'");
$row = mysql_fetch_array($query);
echo $row['full_name'];

哦,你可以使用intval创建id:

$id = intval($id);

答案 3 :(得分:0)

这可以使更多的DB问题更容易;

function mysql_fetch_scalar($res)
{
    $arr = mysql_fetch_array($res);
    return $arr[0];
}

$query = mysql_query("SELECT full_name FROM users WHERE id = '".intval($show[uID])."'");
$fullname = mysql_fetch_scalar($query);
echo $fullname . " ";

答案 4 :(得分:0)

不确定。
此外,您应该 - 通过这些重复的API函数调用来创建函数 像这一样简单的东西

function dbgetvar($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
    return FALSE;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return "";
  return $row[0];
}

在配置文件中使用此功能,并在每次需要数据库中的值时使用:

echo dbgetval("SELECT full_name FROM users WHERE id = '$show[uID]'");

(我希望你有$ show [uID]转义)

当然也可以有2个类似的函数来返回行或行集。或者只是一个但附加参数。或者你可以将它们组合成课程......

你可以为它做甚至转义变量:

function dbgetvar(){
  $args = func_get_args();
  $query = array_shift($args);
  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;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return "";
  return $row[0];
}

echo dbgetvar("SELECT full_name FROM users WHERE id = %s",$show['uID']);

答案 5 :(得分:0)

这就是你必须要做的。你可以将它包装在辅助函数中,如果你使用它的话,但是你可能想要缓存你得到的答案 - 我不认为这个名字会经常改变......

function echoName($user_id) {
    $id = mysql_real_escape_string($user_id);
    $query = mysql_query("SELECT full_name FROM users WHERE id = '$id'");
    $row = mysql_fetch_array($query);
    echo $row["full_name"] . " ";
}

// ...

echoName($show['uID']);