在mysql中我有以下代码:
$row = mysql_fetch_assoc($query);
$dbactive = $row['active'];
if ($dbactive == 1){
...
}...
但我必须在我的项目中使用mysqli。所以我尝试在下面更改它,但我不是很正确。任何人都可以帮我纠正mysqli中的以下语句,以便它匹配上面的mysql语句吗?
更新:
我在mysqli的尝试:
// don't use $mysqli->prepare here
$query = "SELECT TeacherForename, TeacherSurname, TeacherUsername, TeacherPassword, Active FROM Teacher WHERE TeacherUsername = ? AND TeacherPassword = ? LIMIT 1";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ss",$teacherusername,$teacherpassword);
// execute query
$stmt->execute();
// get result and assign variables (prefix with db)
$stmt->bind_result($dbTeacherForename,$dbTeacherSurname,$dbTeacherUsername,$dbTeacherPassword, $dbActive);
while($stmt->fetch()) {
if ($teacherusername == $dbTeacherUsername && $teacherpassword == $dbTeacherPassword) {
if ($dbActive == 1){
$loggedIn = true;
}
}
}
答案 0 :(得分:0)
如果您只返回一行,则不需要while
循环。 bind_result()
需要x
列,并按顺序将它们的值分配给您传入的变量。因此,假设您的结果只包含一行包含一列,bind_result($dbactive)
将是相同的作为$dbactive = $row['active']
与mysql_*
。
答案 1 :(得分:0)
绑定变量意味着只要您调用 - > gt; fetch(),结果行值就会自动放入该变量中。你贬低了与你的
绑定$dbactive = $stmt['active'];
$ stmt是一个结果对象,而不是行对象或数组。它不会包含您通过查询提取的任何数据。
答案 2 :(得分:0)
您可以使用查询方法
$result = $myslqi->query($query);
while($row = $result->fetch_object()){
$row->active …
}
答案 3 :(得分:0)
要获取单行,您可以使用:
if($query = $db->prepare("your sql query where field1=? AND field2=?")){
$query->bind_param('ss', $user_id);
$query->execute();
$query->bind_result($field1, $field2);
$query->fetch();
echo $field1;
}