从SELECT PHP设置变量

Mik*_*ike 2 php mysql

我只想将变量"$ read"定义为数据库中的值.我怎样才能做到这一点?

$read =  "SELECT `read` FROM `users` WHERE `id` = '$id'";
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 9

$read = mysql_result(mysql_query("SELECT read FROM users WHERE id = $id"),0);
Run Code Online (Sandbox Code Playgroud)


Seb*_*olm 6

请注意使用的答案mysql_query,因为它们容易受到SQL注入攻击.

如果$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();
Run Code Online (Sandbox Code Playgroud)

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

  • @Col:本身并不安全,不,但是通过使用`mysql`函数,您必须手动确保所有输入都已正确清理.通过使用准备好的查询,您可以避免担心清理输入,这通常会使您的脚本安全,假设您正确使用它们. (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];
Run Code Online (Sandbox Code Playgroud)

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