【问题标题】:joomla 3x insert a string into sql databasejoomla 3x 将字符串插入 sql 数据库
【发布时间】:2015-08-30 18:15:52
【问题描述】:

我目前正在运行一个 joomla 3x 门户,需要在我的 MySQL 数据库中插入一个字符串,但到目前为止还没有成功(遗憾的是,我不是程序员)。

所以我在我的用户表中添加了一个名为“ok1”的新字段,并且只想在其中插入一个字符串(实际上是一个超链接),并且每次都用最后执行代码的页面上的当前字段覆盖它。

这是我使用的代码,但它总是“炸毁”我的门户...

$query = $db->getQuery(true);

$columns = "ok1"; 
$values = "my hyperlink";

$query
    ->insert($db->quoteName('#__users'))
    ->columns($db->quoteName($columns))
    ->values($db->quoteName($values));

$db->setQuery($query);
$db->execute();

$query = $db->getQuery(true);

$db->setQuery($query);
$db->execute();

希望有人能帮我解决这个问题,在此先感谢。

第二次尝试:

$content ="test"
$query = $db->getQuery(true);
Update `x__users` SET `ok1`=$content WHERE `user` = $user->id;
$db->setQuery($query);
$result = $db->execute();

【问题讨论】:

  • 您只是想存储一个值吗?还是每次都创建一个新的数据库条目?
  • 请尝试通过Joomla Stack Exchange提出您的问题
  • 除其他外,值不是名称,应该只有quote 而不是quoteName。这也是一个相当奇怪的查询。用户表中没有名为 ok1 的列。
  • @Martyn Shutt:我只想用新值替换旧值。目标是向用户显示他上次访问的页面
  • @Elin:这是我能想到的最好的。我实际上在用户表中添加了字段“ok1”

标签: php mysql database joomla insert


【解决方案1】:

你想要的是这样的

$columns = "ok1"; 
$values = "my hyperlink";

$query
    ->update($db->quoteName('#__users'))

    ->set($db->quoteName($columns) = $db->quote($values))
    ->where($db-quoteName('user') = $user->id)
;

$db->setQuery($query);
$db->execute();

也就是说你要更新一条记录而不是插入一条新记录,你希望它是where子句所指示的特定记录。还要对值使用正确的引号(因为它们不是名称)。

【讨论】:

  • 非常感谢艾琳!!我目前正在运行,并且刚刚通过将其复制粘贴到我的站点中进行了测试,并且我的站点被空白-> 白色。但我目前无权访问日志文件。我会在有的时候报告 - 正如我所说的,感谢您的帮助1
  • 好的,我现在检查了错误日志,但在那里我发现了一个名为“referer”的条目,后跟包含 php 的站点的 url - 所以仍然是一个空白页
  • 将错误报告转为开发(在全局配置中)。您也可以添加echo $query->dump(): 来查看生成的查询。好的,我去掉了一些多余的行。
  • 感谢您的帮助。我得到以下输出:“致命错误:无法在第 8 行的 ... 路径 ... 中的写入上下文中使用方法返回值”,在这种情况下为“->set($db->quoteName($columns ) = $db->quote($values))"
【解决方案2】:

我终于明白了——感谢大家的帮助:

对于 Joomla 3.x

通过 php 更新 MySQL-Database 中的列/字段 通过 php 显示来自 MySQL 数据库的列/字段

要将数据导入数据库,请使用以下代码:

// $columns represent the name of the column/filed in the table
// $values represent the value the column/filed should be updated with
$columns = "ok1"; 
$values = "my hyperlink";

$query = $db->getQuery(true);
$query
    ->update($db->quoteName('#__users')) //the name of the table
    ->set($db->quoteName($columns) . ' = ' . $db->quote($values)) 
    ->where($db->quoteName('id') . ' = ' . $user->id) //the current user ID to match the column "id" 
;

$db->setQuery($query);
$db->execute();

要从数据库中获取数据,请使用以下代码:

$query= "SELECT `ok1` FROM `#__users` WHERE `id` = $user->id"; 
$database->setQuery($query);
$ok1_link= $database->loadResult();

我使用并推荐了一个很棒的扩展名为 Sourcerer 将代码直接放入文章中 - 完美运行 基本版本是免费的,支持也是顶级的!!

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多