【发布时间】:2017-03-02 05:48:44
【问题描述】:
common.php
function connection() {
$servername = "db********.db.1and1.com";
$username = "dbo********";
$password = "********";
$dbname = "db********";
$connection = new mysqli($servername, $username, $password, $dbname);
mysqli_set_charset($connection, "utf8");
if ($connection->connect_error) {
die($connection->connect_error);
}
}
category.php
include('../model/common.php');
connection();
$name = $_POST["catname"];
$sql = "INSERT INTO `category` (name) VALUES ('".$name."')" ;
if (mysqli_query($connection, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
mysqli_close($connection);
我通过 jQuery ajax 提交表单并返回此错误:
错误:INSERT INTO `category` (name) VALUES ('some test value')
但是,如果我将 connection() 函数的整个代码放在我的查询上方而不包括 common.php 它工作正常!我猜可能存在一些全球性问题。我也尝试过全局 $connection 或使用单例类但没有成功。
【问题讨论】:
-
先检查你
common.php文件是否包含!! -
@prakashtank 是的,我检查过,它包括
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
请注意,如果您只想坚持使用核心 PHP 和
mysqli,这可能是 PHP 最弱的数据库接口,这是一条艰难的道路。 PHP the Right Way 提供了很多关于解决此问题的更好方法的建议,如果您致力于学习 PHP,也值得探索 development frameworks。 Laravel 对初学者特别友好,有据可查,并拥有出色的社区支持。有了 Eloquent,您就不必纠结于这样的事情了。 -
见鬼,即使是 PDO 也是一个非常更好的用于处理数据库查询的 API,并且它内置于