编辑我把代码改成了建议答案,所有的代码片段现在都更新了
目前我正在玩php。因此,我试图建立一个程序,可以执行sql命令。所以,我尝试编写一些函数来执行查询。但我到了一个无法自拔的地步。我的问题是,对于insert-into命令,我想给出一个数组,其中包含要插入的数据,但我根本不知道怎么做。
这是我得到的和我认为与这次行动有关的信息
首先,我要创建的函数
public function actionInsert($data_values = array())
{
$db = $this->openDB();
if ($db) {
$fields = '';
$fields_value = '';
foreach ($data_values as $columnName => $columnValue) {
if ($fields != '') {
$fields .= ',';
$fields_value .= ',';
}
$fields .= $columnName;
$fields_value .= $columnValue;
}
$sqlInsert = 'INSERT INTO ' . $this->tabelle . ' (' . $fields . ') VALUES (' . $fields_value . ')';
$result = $db->query($sqlInsert);
echo $sqlInsert;
if ($result) {
echo "success";
} else {
echo "failed";
}
}
}
这就是我计算这些值的方法
<?php
require_once 'funktionen.php';
$adresse = new \DB\Adressen();
$adresse->actionInsert(array('nachname'=>'hallo', 'vorname'=>'du'));
我的结果
插入到adressen(nachname,vorname)值(hallo,du)失败
我想看到的
成功
当然还有数据库中新插入的值
3条答案
按热度按时间3htmauhk1#
在使用关系数据库而不使用
PDO
:你正在使用的数据库是什么。
这是你的选择
MySQL
,postgreSQL
,SQLite
等等,但是不同的数据库通常有不同的语法来插入和选择数据,以及其他操作。此外,您可能需要不同的类和函数来与它们交互。也就是说,你查过php的官方手册了吗?例如,需要与mysql数据库交互的php应用程序概述。你想要达到的目标是什么?
在处理实际代码之前,先构造sql是很有帮助的。检查sql语法是否正确。如果可以在数据库中运行sql,那么接下来可以尝试实现代码。
在代码中形成sql查询的正确方法是什么?
在本地开发环境中乱来是可以的,但是您肯定应该学习如何使用准备好的语句来防止可能的sql注入攻击。
还要了解有关php中的数组的更多信息:arrays in php。可以在
foreach
回路:您不需要在循环本身中构造查询。您只使用循环来构造查询字段字符串
VALUES
字符串。当你在建造房子的时候要非常小心VALUES
因为字段可以有不同的类型,所以应该在字符串字段值周围添加双引号。是的,当你“手动”做事时,你会经历所有这些麻烦。如果使用的是查询参数或PDO
或者任何其他高级驱动程序,这可能会容易得多。之后,您可以将这些值串联起来形成
SQL
查询。一旦你对语言本身和你正在使用的数据库更加熟悉,你肯定会感觉更舒服。祝你好运!
cld4siwp2#
这是在教室里吗?我假设tabelle属性设置正确。也就是说,您应该更正foreach循环,因为它没有正确使用:
这是一种相当基本的方法,在这种方法中,您循环遍历数据并对每一行进行查询,但是如果您有大的数据集,那么它的性能就不太好。另一种方法是通过在循环中装入查询并稍后发送(注意,起始数组不同),一次完成所有操作:
}
顺便说一句,你的想法是正确的,你应该做一些良好的做法,即使你不公开消毒。
nzk0hqpo3#
多亏了@eagle l的回答,我终于想出了一个办法。这与我第一次尝试的不同,但如果有人有类似的问题,我希望这能帮助他。
编辑
以及函数调用