繁体   English   中英

将mysql_ *转换为mysqli_ *问题

[英]Converting mysql_* to mysqli_* issue

我正在使用MySQLConverterTool转换我的Web应用程序,

我面临的第一个问题是代码变得越来越大,我什至不明白那意味着什么? 以前这是非常小的代码,现在我看到这太大了。

//old code
$ask_id = mysql_real_escape_string($_POST['ask_id']);

//after convert
$ask_id = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

它的工作正常,但我想知道它是mysqli_*正确方法还是需要在线解决一些问题或错误?

我也想知道如何使这部分安全

if (isset($_POST['asking-money'])) {
    $dailyBonus = 10000;
    $update = mysqli_query($GLOBALS["___mysqli_ston"], "UPDATE users SET ask_time='$newtime', bonus='dailyBonus'  WHERE id='$userid'");
// some more calculation
}

代码的第一位(粗略地)看起来像添加了一条巨大的三元语句,以检查所使用的变量是否至少已设置,但除此之外,您应该只能使用:

mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id'])

为了确保SQL查询的安全性,请尝试使用预处理语句,而不要直接使用变量查询

mysqli_prepare

对于mysqli_ *部分,以前用mysql_ *完成的大多数事情都与新前缀几乎相同,因此,很可能没有问题,并且如何确保它的安全,只需评估并准备所有内容即可。在查询中使用用户之前传递给用户的参数,换句话说,在任何情况下都从不直接在查询中使用用户输入。 除此之外,代码对我来说似乎还不错。

第一个代码是一个三元语句 (if / else的简称)。 我认为这太多了。

如果可以使用PDO ,则建议使用PDO及其准备好的语句 它非常安全且易于处理。

顺便说一句:尽量避免使用MySQLConverterTool 数月后很难进入此代码。 ķEEP I T 小号集市和S imple! :-)

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM