如何制作mysqli预处理语句并获取结果?

时间:2014-02-15 21:13:10

标签: php mysql sql mysqli

我无法理解如何创建一个准备好的语句,我看过的所有教程都只提取了列。 我正常的SQL查询

      $id = $_GET['id']; 
      $result = mysql_query("SELECT * FROM files WHERE id=$id ") or die(mysql_error());
      $row = mysql_fetch_array($result);
      $name = $row['name'];
      $date = $row['date'];

请告诉我如何创建预准备语句以及如何获取多个列并将日期插入变量。

1 个答案:

答案 0 :(得分:1)

首先,在生产中使用SELECT *并不是一个好主意。而是明确指定所需的列。看看https://stackoverflow.com/a/65532/1920232

现在您的代码可能看起来像

$id = $_GET['id']; 

$db = new mysqli('localhost', 'user', 'password', 'dbname');
$sql = 'SELECT name, date FROM files WHERE id = ?'; //specify columns explicitly 
if ($stmt = $db->prepare($sql)) { //create a prepared statement
    $stmt->bind_param('i', $id); //bind parameters
    $stmt->execute(); //execute query
    $stmt->bind_result($name, $date); //bind result variables
    $stmt->fetch(); //fetch values
}
$db->close();

echo $id, ' ', $name, ' ', $date;

注意: 为简洁起见,故意跳过所有错误处理。