gpt4 book ai didi

php - 如何从 'really' 检测数据库中的整数?

转载 作者:行者123 更新时间:2023-11-29 05:41:10 26 4
gpt4 key购买 nike

我正在尝试使用以下代码保存一些代码。我有一个对象,其中的变量与表行的名称相同,因此我可以创建一个像这样的插入:

$query = "INSERT INTO table ";
$columns = '(';
$values = 'VALUES (';
foreach ($this as $var => $value){
if ($value){
$columns .= $var.', ';
if (!is_int($value))
$value = '\''.$value.'\'';
$values .= $value.', ';
}
}
$columns .= ')';
$values .= ')';
$columns = str_replace (', )', ')', $columns);
$values = str_replace (', )', ')', $values);
$query .= $columns." ".$values;

但是每个单独的变量都被检测为字符串,并且并非如您想象的那样在所有字段中都是如此。

有没有人有解决办法?

最佳答案

我会这样写:

<?php
$canonical_columns = array_flip(array("column1", "column2", "column3"));
$columns = array_keys(array_intersect_key($canonical_columns, (array) $this));
$params = join(",", array_fill(0, count($columns), "?"));
$columns = join(",", $columns);
$query = "INSERT INTO table ($columns) VALUES ($params)";
$stmt = $pdo->prepare($query);
$stmt->execute(array_values($this));

停止连接字符串片段以形成 SQL。

使用 PDO,并使用参数作为值。

通过将输入与已知的有效列名称进行比较来将列名称列入许可名单。

关于php - 如何从 'really' 检测数据库中的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com