我只想将变量“$ read”定义为数据库中的值。我怎么能这样做?
$read = "SELECT `read` FROM `users` WHERE `id` = '$id'";
答案 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];