我对使用php和mysqli还是有点陌生,但是使用此代码,我遇到了几个不同的错误,每次我修复一个错误时,都会弹出另一个错误。起初我以为是因为我使用的是过时的系统,但很快意识到我正在使用的某些代码实际上来自较旧的版本...我已经进行了搜索和搜索,但是它给我的唯一问题是使用->由于某种原因,也许还有其他选择吗?还是我只是疯了...
我尝试更新服务器,将mysql更改为mysqli,将PHP更新为当前版本,在整个网络和youtube上进行搜索,以了解其他人是如何做到的以及遇到了什么错误
//app.js
var express = require('express');
var homeRouter= require('./routes/home');
var i18n = require("i18n");
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
i18n.configure({
locales:['en', 'zh'],
directory: __dirname + '/locales',
objectNotation: true
});
app.use(i18n.init);
app.use('/:lang', homeRouter);
//home.js
var express = require('express');
var router = express.Router();
var i18n = require('i18n');
router.get('/', function (req, res) {
i18n.setLocale(req,req.baseUrl.split('/')[1]);
res.render("index.ejs", {i18n: res})
}
//index.ejs
<div>
<h1><%=i18n.__("Welcome")%></h1> // working fine in templates
<my-element translate="<%=i18n%>"> // passing the response of translation to component
</my-element>
</div>
//en.json
{
"Welcome": "Hi , Welcome to my site",
"list": "Discover the List of Travelling Cities"
}
//myElement.js
import { LitElement, html, css
} from "https://unpkg.com/@polymer/lit-element/lit-element.js?module";
export class Element extends LitElement {
static get properties() {
return {
translate: {type: Object}
}
constructor() {
super();
}
render(){
<p>${this.translate.list}</p> // not displaying components
}
}
期望它将数据添加到PHPmyadmin。将从数据库中提取数据,例如登录,但不会添加数据。
错误消息: 致命错误:未捕获错误:对C:\ xampp \ htdocs \ myfiles \ Visual Studio Code JavaScript \ PHP Blog Code \ includes \ signup.inc.php:18中的字符串的成员函数query()进行调用:堆栈跟踪:#0 { main}放在第18行的C:\ xampp \ htdocs \ myfiles \ Visual Studio代码JavaScript \ PHP Blog代码\ includes \ signup.inc.php中
答案 0 :(得分:0)
起初,您将变量$mysqli
用于MySQLi数据库连接实例化,但随后使用表示查询本身的字符串覆盖它:
$mysqli = new mysqli ('localhost', 'root', '', 'jordansworld');
$mysqli = "INSERT INTO user ( first, last, email, uid, pwd )
自然地,您的字符串不包含名为query()
的方法。
要解决此问题,只需将第二个声明替换为新的变量名,例如$query
,然后在->query()
内部引用此变量,如下所示:
$query = "INSERT INTO user ( first, last, email, uid, pwd ) VALUES ( '{$mysqli->real_escape_string($_POST['first'])}' , ' {$mysqli->real_escape_string($_POST['last'])}' , '{$mysqli->real_escape_string($_POST['email'])}' , '{$mysqli->real_escape_string($_POST['uid'])}' , '{$mysqli->real_escape_string($_POST['pwd'])}'";
$insert = $mysqli->query($query);
但是请注意,mysqli_real_escape_string()
是not sufficient以防止SQL注入,相反,您应该转而使用 prepared statements 。