2014-02-15 50 views
1

我无法理解如何创建一个准备好的语句,并且我看到的所有教程都只提取了一列。 我正常的SQL查询如何让mysqli准备好语句并获取结果?

 $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

首先,在生产中使用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; 

注:所有错误处理故意跳过简洁。

+0

谢谢,那我需要:D –