基本上我刚刚意识到我需要将一些东西从mysql改为mysqli,任何人都可以帮忙,因为我对此毫无头绪,这是我的尝试:
$sCat = "SELECT catDesc FROM te_category WHERE catID=?";
$sCat = mysqli_prepare($conn, $sCat);
mysqli_stmt_bind_param($sCat, "s", $cat_id);
mysqli_stmt_execute($sCat);
$qrCat = mysqli_query($conn, $sCat);
while($rowC = mysqli_fetch_assoc($qrCat))
{
$cat_desc = $rowC ['catDesc'];
}
echo $cat_desc;
原始的mysql是:
$sCat = "SELECT catDesc FROM te_category WHERE catID='$cat_id'";
$qrCat = mysql_query($sCat) or die (mysql_error());
while($rowC = mysql_fetch_assoc($qrCat))
{
$cat_desc = $rowC ['catDesc'];
}
答案 0 :(得分:1)
适合切换到mysqli并使用预准备语句。一旦你习惯了它们,你应该发现它们比所有混乱的转义和字符串连接更容易,因此更安全。
当您使用预准备语句时,对mysqli_prepare()
和mysqli_stmt_execute()
的调用取代mysqli_query()
。也就是说,如果您已经准备好并执行,则不需要执行mysqli_query()
。
然后从结果中获取,您可以使用mysqli_stmt_get_result()
从准备好的语句中获取结果:
已编辑的代码:
if (($sCat = mysqli_prepare($conn, $sCat)) === false) {
die($conn->error);
}
mysqli_stmt_bind_param($sCat, "s", $cat_id);
if (mysqli_stmt_execute($sCat) === false) {
die($sCat->error);
}
if (($result = mysqli_stmt_get_result($sCat)) === false) {
die($sCat->error);
}
while($rowC = mysqli_fetch_assoc($result))
{
. . .
不要忘记始终从准备和执行中检查返回值。如果解析或特权或拼写错误的表名或任何内容出现任何问题,您将需要了解它。