从SELECT PHP设置变量

时间:2011-02-08 08:32:09

标签: php mysql

我只想将变量“$ read”定义为数据库中的值。我怎么能这样做?

$read =  "SELECT `read` FROM `users` WHERE `id` = '$id'";

6 个答案:

答案 0 :(得分:9)

$read = mysql_result(mysql_query("SELECT read FROM users WHERE id = $id"),0);

答案 1 :(得分:6)

请注意使用mysql_query给出的答案,因为它们容易受到SQL injection的攻击。

如果用户提供$id,您应该从不直接将其放入SQL查询中,而是使用预准备语句。

这样做的一种方法是使用PDO,方式类似于:

$dbh = new PDO($connStr, $user, $pass);
$sql = "SELECT `read` FROM `users` WHERE `id` = :id";
$statement = $dbh->prepare($sql);
$statement->execute( array('id' => $id) );
$read = $statement->fetchColumn();

有关如何使用PDO的更多信息,请参阅以下内容:

答案 2 :(得分:5)

实现此目的的一种方法如下:

// Run the query
$db_result = mysql_query("SELECT read FROM users WHERE id = $id");
// Get the first row (in this case you'll only get one row)
$row = mysql_fetch_array($db_result, MYSQL_NUM);
// Get the first column (you should only have one column anyway) and put it into your variable
$read = $row[0];

如下所述,我应该补充一点,如果你不相信$ id被正确转义,你可能会受到SQL injection的攻击。要解决这个问题,您应该确保正确转义并验证$ id或使用某种绑定或预处理语句为您执行此操作,例如在this question或下面的示例中。

答案 3 :(得分:2)

我知道教某人几乎是不可能的,特别是如果他们不想学习的话。但希望它对其他人有用

所有现代编程语言都支持称为“用户定义函数”的东西 一个非常方便的功能。

一个程序员,想要让他们的代码真正整洁,可以用一些重复的代码创建一个函数,并且调用这个代码真的很小,就像它在OP中的措辞一样:

$read = dbgetvar("SELECT `read` FROM `users` WHERE `id` = %d",$id);

这种方法的另一个好处 - 您的代码可以包含所有必要的东西,比如参数清理和错误处理。并且仍然称这段代码比上面的所有代码都短,在追求简洁方面变得丑陋且难以理解。

这种功能的一个例子

function dbgetvar(){
  $args = func_get_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);

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

答案 4 :(得分:1)

我会做以下事情:

// leave the single quotes around $id because it most probably is an INT
// LIMIT 1 will make the query a bit faster
$result = mysql_query("SELECT `read` FROM `users` WHERE `id` = $id LIMIT 1");

$row = mysql_fetch_row($result);
$read = $row[0];

希望它适合你。

答案 5 :(得分:-3)

假设只有1个结果:

$read = mysql_fetch_array(mysql_query("SELECT read FROM users WHERE id = $id"));
$read = $read[0];