当字符串数据类型时,PHP SQL查询返回'unknown colum'

时间:2017-06-23 10:04:32

标签: php joomla

我在查询数据库时遇到问题。我被提供了环境,所以我无法改变。而且我正在努力适应Joomla以便能够使用数据库。

我创建了查询,并且当数字是数字时我得到正确插入的数据,但如果我输入一个字符串,则返回“未知列”。

这可能是单引号或双引号的问题以及如何解释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();

我正在尝试使用表单的2个字段(列)。如果我在其中一个字段中键入'asfasd'并在POST表单中返回:

  

'字段列表'中的未知列'asfasd'

但如果我输入一个数字,只需将寄存器添加到数据库中。

编辑:SQL数据库中的数据类型为'varchar'。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

我们假设De = 3Para = asd

$values_str = implode(',', $values);

$values_str将为3','asd

$values_str = "'" . $values_str . "'"; \\<--This is missing step

现在,$values_str将为'3','asd'

.
.
.
->values($values_str);

我不知道你为什么要通过破坏价值来创造一个字符串。但是,如果你愿意,你必须在两端附加引号。