我知道有很多类似的问题,但我不明白它是如何工作的。我的问题是,我已经开始了我的第一个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>";
}