我正在更新mysqli数据库查询以使用预准备语句。这是当前的PHP代码:
$randomQQuery = "SELECT question FROM question WHERE tagOne='".$sub."' ORDER BY RAND() LIMIT 1";
$randomQ = mysqli_query($dbc,$randomQQuery);
$qRow = mysqli_fetch_array($randomQ);
$question = $qRow['question'];
这是我最初的准备陈述:
$randomQQuery = $dbc->prepare("SELECT question FROM question WHERE tagOne=? ORDER BY RAND() LIMIT 1");
$randomQQuery->bind_param('s',$sub);
$randomQQuery->execute();
$qRow = $randomQQuery->fetch_array();
$question = $qRow['question'];
答案 0 :(得分:2)
1 - 事实并非如此,实际上你甚至没有将它命名为$ stmt?
2 - 从#1开始不需要这个;)
3 - 没关系......不是很好,一切都取决于你的需求
您所做的只对1行有效,否则至少需要一段时间
while($row = $result->fetch_array())
{
$rows[] = $row;
}
最佳实践至少会验证执行没有返回false ..
同样默认情况下,它使用MYSQL_BOTH,它为您提供数组和编号数组。如果您不需要两者都可以节省一些内存:
/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);
/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
答案 1 :(得分:1)
1:不。
3:获取数组通常由while($qRow = $randomQQuery->fetch_array()) { }
完成。我会选择$row = $randomQQuery->fetch_row();
。
答案 2 :(得分:-1)
这是一些示例代码,如果它有帮助,可以很容易理解。我使用$ stmt(这就是我学习如何操作的方式)并且我已经无数次地使用了它。我知道它可能不完全是您所需要的,但这可以帮助或帮助其他有类似问题的人。
include "../dbConnFile.php";
if($conn){
if($_POST['example1']!='' && $_POST['example2']!=''){//checks input
$stmt = $conn->prepare("INSERT INTO database (example1, example2) VALUES (?,?)");
$stmt->bind_param("ss", $_POST['example1'], $_POST['example2']);
$stmt->execute();
$stmt->close();
}
$result=$conn->query("SELECT example1, example2 FROM datasbase ORDER BY ____ DESC");
if($result){
while($tempRowHolder = mysqli_fetch_array($result,MYSQL_ASSOC)){
$records[] = $tempRowHolder;
}
}
}