PHP SQL查询返回';未知柱';当字符串数据类型

PHP SQL查询返回';未知柱';当字符串数据类型,php,joomla,Php,Joomla,我在查询数据库时遇到问题。我已经被提供了环境,所以我不能改变。这是一个Joomla,我正在尝试适应它,以便能够使用数据库 我创建了查询,当数据是数字时,我会正确插入数据,但如果我输入字符串,它会返回“unknown column” 单引号或双引号以及如何解释PHP代码可能是个问题,但我看不到,我来看看是否有人可以帮忙 下面是我正在添加的PHP代码。由joomla提供的JDatabase表达式支持 // Get a db connection. $db = JFactory::getDbo();

我在查询数据库时遇到问题。我已经被提供了环境,所以我不能改变。这是一个Joomla,我正在尝试适应它,以便能够使用数据库

我创建了查询,当数据是数字时,我会正确插入数据,但如果我输入字符串,它会返回“unknown column”

单引号或双引号以及如何解释PHP代码可能是个问题,但我看不到,我来看看是否有人可以帮忙

下面是我正在添加的PHP代码。由joomla提供的JDatabase表达式支持

// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Insert columns.
$columns = array("De", "Para");

// Insert values.
$data = $_POST['form'];
$de = $data[De];
$para = $data[Para];

$values = array($de, $para);

// Prepare the insert query.
$query
    ->insert($db->quoteName('referencias'))
    ->columns($db->quoteName($columns))
 // ->values($de, $para);

  ->values(implode(',', $values));

// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$db->execute();
我正在尝试处理您看到的表单的两个字段(列)。如果我在其中一个字段中键入'asfasd'并发布它返回的表单:

“字段列表”中的未知列“asfasd”

但如果我键入一个数字,它只会将寄存器添加到数据库中

编辑:SQL数据库中的数据类型为“varchar”

提前谢谢

$values = array($de, $para);
让我们假设
De=3
Para=asd

$values_str = implode(',', $values);
$values_str = "'" . $values_str . "'"; \\<--This is missing step
$values\u str
将是
3','asd

$values_str = implode(',', $values);
$values_str = "'" . $values_str . "'"; \\<--This is missing step

我不知道为什么要通过内爆值来生成字符串。但是,如果你想,你必须在两端加引号。

db中的列被设置为一个数字?@Syfer它被设置为varcharOh抱歉,我没有“但是我在尝试发布时忘记在这里更改它”。确切地说,我有$de=$data[de]$para=$data[para];尝试你现在想要的。并返回相同的错误。非常感谢。您能提供
De
Para
列的数据类型吗?我想,如果字段的数据类型是number,您不应该将其包装在单引号中,这是您目前正在代码中通过内爆执行的操作。它在SQL数据库中声明为varchar。我将信息添加到帖子中。谢谢你。我非常感谢你的回答。这有助于理解如何使用引号和双引号。。从那以后,我将修改代码,看看我是否可以不使用你建议的内爆。(我必须说我复制了那部分代码,现在你说在那里使用它没有多大意义)非常感谢你,你帮助我知道了为什么它真的失败了。它已经不能完全使用您的代码,但它会。我感谢您的反馈,我很高兴我的回答帮助您解决了问题。