首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModX Revo插入到数据库

ModX Revo插入到数据库
EN

Stack Overflow用户
提问于 2018-12-11 16:07:24
回答 2查看 582关注 0票数 0

我是一个新手在ModX,尝试插入到数据库,但总是失败。这是我的插入脚本:

代码语言:javascript
复制
<?php
define('MODX_CORE_PATH', '/aocore/');
define('MODX_CONFIG_KEY','config');
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';

$host = 'localhost';
$username = 'asdsadsada';
$password = 'dsadsadsada';
$dbname = 'sadsadsadsadas';
$port = 3306;
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$dbname;port=$port;charset=$charset";
$xpdo = new xPDO($dsn, $username, $password);
 echo $o = ($xpdo->connect()) ? 'Connected' : 'Not Connected';
$results = $xpdo->query("insert into table_name (name,email) VALUES ('".$_POST['name'].",".$_POST['email']."')"); 
$stmt = $modx->prepare($results);
$stmt->execute();
?>

请帮帮忙,完全被困在这里了。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-09-06 21:47:17

在看不到数据库结构的情况下,很难调试/测试你的代码,因为我们不能重现任何东西。

从外观上看,您没有使用对象。您可能希望使用自己的模式并将给定的记录作为对象插入到数据库中。有关在this guide中创建自定义数据库表的更多信息,请查看MODX。

请确保您正在使用strip_tags()htmlspecialchars()等函数对保存到数据库中的输入进行清理,以防止XSS和其他injection attacks。还要确保您使用的是预准备语句。

但是,通过查看代码,我可以看到您正在执行query()函数,该函数用于查询数据库(检索数据库记录)。如果想要执行SQL语句,比如"INSERT“,就需要使用exec()函数。

示例:

代码语言:javascript
复制
$xpdo->exec("INSERT INTO `table_name` (`name`,`email`) VALUES ('".htmlspecialchars(strip_tags($_POST['name'])).",".htmlspecialchars(strip_tags($_POST['email']))."')");

如果你不打算使用MODX对象,你会发现使用PHP的PDO interface with prepared statements会更容易。

票数 0
EN

Stack Overflow用户

发布于 2019-10-01 18:57:23

好吧,如果还不算太晚的话。你没有分享确切的问题,但我在你的代码中看到了一些奇怪的东西:

代码语言:javascript
复制
...VALUES ('".$_POST['name'].",".$_POST['email']."')");

如果POST数组中的值进入字符串,那么您就拥有了

代码语言:javascript
复制
...VALUES ('John,mail@mail.com')");

John,mail@mail.com'是一个单独的值,其中nameemail应该有两个值。因此,尝试将'放入查询中,如下所示

代码语言:javascript
复制
...VALUES ('".$_POST['name']."','".$_POST['email']."')");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53719812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档