打印出从查询中获取的行

时间:2013-11-21 21:25:46

标签: php mysqli prepared-statement

我知道有很多类似的问题,但我无法理解它是如何工作的。 我的问题是,我开始了我的第一个项目(也是我的第一编码冒险)使用的MySQL没有准备好的语句的PHP,使用MySQL的非准备语句一切它的确定我的问题就出来了,当我说写从预处理语句划伤项目。 我已经阅读了很多教程手册,但我的英语不是很好,我不知道如何做到这一点:

$stmt = $mysqli->prepare("SELECT (filename,ext) FROM userpic WHERE username= ?");
$stmt->bind_param('s', $username);

有数百行,我必须创建一个取出文件名和ext的cicle 并将我打印出图像的路径,但是如何使用filename和ext取出数组并为每一行创建cicle。

我无法理解它在非预处理语句中是如何工作的,例如:

$sql = mysql_query("SELECT filename FROM users WHERE username = '$_SESSION[username]' ")or die(mysql_error());
while($row = mysql_fetch_array($sql))
{
echo "<img id=\"membimagestyle\" src=\"uploads/$row[filename]\"></div>";
}

我无法理解如何在预准备语句版本中使用mysql_fetch_array,$ row [filename]。

感谢大家帮助我!! &安培; 很抱歉我的编码技巧不好,对不起我的英文不好。

1 个答案:

答案 0 :(得分:-1)

我希望这个例子可以帮助你解决问题

$query = "SELECT filename FROM users WHERE username = ?";


if($stmt = $mysqli->prepare($query)){
   // bind parameter
   $stmt->bind_param('s', $username);

  // execute
   $stmt->execute();

   // bind result to a variable
   $stmt->bind_result($filename);

   // iterate through the results
   while ($stmt->fetch()) {        
        echo "<img id=\"membimagestyle\" src=\"uploads/$filename\"></div>";
    }    

    // close the statement   
    $stmt->close();
}

编辑: 如果要获取多个列,请执行以下操作:

$stmt->bind_result($filename, $extension);

while ($stmt->fetch()) {
    echo "<img id=\"membimagestyle\" src=\"uploads/$filename.$extension\"></div>";
}