php - 将 PHP 变量传递给 MySQL

标签 php mysql variables

我在 PHP 中有一个函数可以将值插入到 MYSQL 表中。

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES(number, "string", "string")"
    $q = mysqli_query($db, $insert);
}

我正在努力自定义 VALUES 部分。我需要数字、字符串和字符串分别是来自 PHP 的 ID、合作伙伴和商家变量。

我试过了

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES(" .$ID . $Partner . $Merchant . ")";
    $q = mysqli_query($db, $insert);
}

还有。但它似乎不起作用,因为对于 SQL,字符串值必须用引号括起来。但是,如果我更改代码,使其成为 ."$ID"。 “$合作伙伴”。 “$商家”。 ")";因此变量根据需要用引号引起来,它们不再是 PHP 变量。如何让我的 PHP 变量包含在引号中,以便我可以正确执行 SQL?

最佳答案

其他答案,使用连接,是简单的。最好的方法是使用准备好的语句,这将使您的代码更加安全。

$insert = "INSERT INTO " .$new_table. " VALUES(?, ?, ?)";
$q = mysqli_prepare($db, $insert);
mysqli_stmt_bind_param($q, "iss", $ID, $Partner, $Merchant);
mysqli_stmt_execute($q);

进行参数化查询意味着您的查询和数据是分开发送的。这意味着查询的结构已经存在,因此不能被数据中插入的任何其他内容改变,这意味着您可以免受 SQL 注入(inject)攻击。

查看 PHP 手册:

关于php - 将 PHP 变量传递给 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11163074/

相关文章:

php - Javascript/PHP - reCaptcha 样式已损坏

php - 静态页面数据库还是文件?

php - XAMPP - 服务器和客户端无法通信

c# - 无法将类型 'double' 隐式转换为 'int'

mysql - 如何将 sum(field_name) 存储在 MySql Select 语句中的变量中?

java - 检测字符串变量中的数字(在 Java 中)

php - 包含 AS 的 SQL SELECT 语句

php - 如何从 Codeigniter 4 中的 url 中删除 public/index.php/

php - 动态 jQuery 弹出窗口

c# - 在 C# 中将 MySQL 数据库嵌入到应用程序中