从mysql转换为mysqli

时间:2014-04-18 22:52:32

标签: php mysql mysqli

基本上我刚刚意识到我需要将一些东西从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'];
                    }

1 个答案:

答案 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))
{
    . . .

不要忘记始终从准备和执行中检查返回值。如果解析或特权或拼写错误的表名或任何内容出现任何问题,您将需要了解它。