我有一个包含 10 多列的长插入查询。我正在寻找一种紧凑的方法来构建此查询,例如:
$mysqli = new MySQLi(...);
$mysqli->query("insert into table");
$mysqli->addKeyValue("columnName1", "value1");
$mysqli->addKeyValue("columnName2", "value2");
$mysqli->addKeyValue("columnName"3, "value3");
$mysqli->execute();
据我所知,默认的 MySQLi 无法做到这一点。有没有提供类似功能的库?
我坚持尝试做这样的事情的原因是我试图编写每行不超过 80-100 个字符限制的代码,以使我的代码更具可读性。
我知道准备好的语句并绑定参数。
我可以为您提供一个名为 SafeMysql 的库,我编写它是为了使 mysqli 可用。有了它,方法就会有所不同:
include_once 'safemysql.class.php';
$db = new safeMysql();
$data = [
"columnName1" => "value1",
"columnName2" => "value2",
"columnName3" => "value3",
];
$db->query("insert into table SET ?u", $data);
如您所见,在这两种情况下,行的长度都不会超过 40 个字符。
这有什么问题
bind_param
这与你想要做的非常相似。
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd',
$code,
$language,
$official,
$percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
$stmt->execute();
// add another row
$code = 'XXX';
$language = 'Yyyyyyyy';
$official = "Y";
$percent = 19.2;
/* execute prepared statement */
$stmt->execute();
无耻地从手册中抄袭