打印出从查询中提取的行


Print out rows taken from query

我知道有很多类似的问题,但我不明白它是如何工作的。我的问题是,我已经开始了我的第一个php项目(也是我的第一次编码冒险),使用的是没有准备好语句的mysql,使用的不是没有准备好的语句。一切都好。当我说用准备好的声明从头开始写项目时,我的问题就出现了。我读了很多教程手册,但我的英语不是很好,我不知道如何制作:

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

有数百行,我必须创建一个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>";
}

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

谢谢大家帮助我!!&很抱歉我的编码技术不好,也很抱歉我英语不好。

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

$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>";
}