Php mysql到mysqli的转换

Php mysql到mysqli的转换,php,mysql,mysqli,Php,Mysql,Mysqli,嗨,我正在将我的MySQL代码转换为MySQLi,因为它更安全,但AFAIK MySQLi本身并不更安全 我在本主题的选定答案中使用了转换器: 代码正在运行,但现在我不知道该做什么,我知道我必须准备查询,但具体在哪里以及如何准备我不知道 例如,如果我有一个包含5个或更多php变量的INSERT查询,它可以吗?我该怎么办?我找到的所有例子都是一个变量。。。我是否在查询前准备好排队 我是不是太糊涂了?如果这是非常基本的东西,我很抱歉,但我完全不懂这一点,我想要的只是一些指导原则…下面是一个带有多个

嗨,我正在将我的MySQL代码转换为MySQLi,因为它更安全,但AFAIK MySQLi本身并不更安全

我在本主题的选定答案中使用了转换器:

代码正在运行,但现在我不知道该做什么,我知道我必须准备查询,但具体在哪里以及如何准备我不知道

例如,如果我有一个包含5个或更多php变量的INSERT查询,它可以吗?我该怎么办?我找到的所有例子都是一个变量。。。我是否在查询前准备好排队


我是不是太糊涂了?如果这是非常基本的东西,我很抱歉,但我完全不懂这一点,我想要的只是一些指导原则…

下面是一个带有多个参数的插入查询示例

/* create a prepared statement */
if ($stmt = $mysqli->prepare("INSERT INTO mytable (field1, field2, field3) VALUES(?, ?, ?)")) {

    /* bind parameters for markers */
    $stmt->bind_param("sss", $field1, $field2, $field3);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
}
如您所见,
$field1
$field2
$field3
将被绑定为字符串(注意三个
s
),并将替换查询中的

:

i-对应变量的类型为integer
d-对应变量的类型为double
s-对应的变量具有类型字符串
b-对应的变量是blob,将以数据包的形式发送


下面是一个具有多个参数的插入查询的示例

/* create a prepared statement */
if ($stmt = $mysqli->prepare("INSERT INTO mytable (field1, field2, field3) VALUES(?, ?, ?)")) {

    /* bind parameters for markers */
    $stmt->bind_param("sss", $field1, $field2, $field3);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
}
如您所见,
$field1
$field2
$field3
将被绑定为字符串(注意三个
s
),并将替换查询中的

:

i-对应变量的类型为integer
d-对应变量的类型为double
s-对应的变量具有类型字符串
b-对应的变量是blob,将以数据包的形式发送


不要为了“安全”而升级。这一切归结为程序员的能力和知识。使用mysqli或pdo并不能立即使任何东西“更安全”。如果您知道自己在做什么,mysql可以非常安全。相反,升级到pdo或mysqli,因为mysql已被弃用。。。。而且,因为mysql迫使您在编写代码时没有一些方便的基本功能,如预处理语句;他提出了完全正确的问题,并且想把事情做对。让我们鼓励这一点。在任何情况下,实际上旧的mysql库中都存在一些安全隐患,即使您不打算使用诸如预处理查询之类的新功能,也可以避免这些隐患。如果您要关闭
mysql\uuuuuz
,不妨转到
PDO
。这正是@SDC所说的,我只是想用正确的方式做事。。。我用转换器进行了转换,一切正常,现在我只是不明白代码的某些部分,迟早我会的,我需要防止我想要的缺陷。。。我说的安全显然是MySQL注入。。。每次来这里,我都在学习,而且学习得更快,因为这里有更多的例子和解释一切的不同方式……不要升级为“安全性”。这一切归结为程序员的能力和知识。使用mysqli或pdo并不能立即使任何东西“更安全”。如果您知道自己在做什么,mysql可以非常安全。相反,升级到pdo或mysqli,因为mysql已被弃用。。。。而且,因为mysql迫使您在编写代码时没有一些方便的基本功能,如预处理语句;他提出了完全正确的问题,并且想把事情做对。让我们鼓励这一点。在任何情况下,实际上旧的mysql库中都存在一些安全隐患,即使您不打算使用诸如预处理查询之类的新功能,也可以避免这些隐患。如果您要关闭
mysql\uuuuuz
,不妨转到
PDO
。这正是@SDC所说的,我只是想用正确的方式做事。。。我用转换器进行了转换,一切正常,现在我只是不明白代码的某些部分,迟早我会的,我需要防止我想要的缺陷。。。我说的安全显然是MySQL注入。。。每次来这里,我都在学习,学习得更快,因为有更多的例子和不同的解释方式……如果不是字符串呢?有些整数和浮点数是i/f?用另一种类型更新答案谢谢:)所以在另一种类型中进行任何其他查询都是这样的,我替换了示例中的变量,对吗?stmt每次都需要关闭,对吗?是的,没错,只要更改变量和类型以及问号的数量。如果不是字符串?有些整数和浮点数是i/f?用另一种类型更新答案谢谢:)所以在另一种类型中进行任何其他查询都是这样的,我替换了示例中的变量,对吗?stmt每次都需要关闭,对吗?是的,没错,只要更改变量和类型以及问号的数量。