Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL插入不工作_Php_Mysql - Fatal编程技术网

Php SQL插入不工作

Php SQL插入不工作,php,mysql,Php,Mysql,common.php function connection() { $servername = "db********.db.1and1.com"; $username = "dbo********"; $password = "********"; $dbname = "db********"; $connection = new mysqli($servername, $username, $password, $dbname); mysql

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);
    } 
}
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);
category.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);
    } 
}
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);
include('../model/common.php');
连接();
$name=$\u POST[“catname”];
$sql=“插入到`category`(name)值(“$name.”)中”;
if(mysqli_查询($connection,$sql)){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($connection); } mysqli_close($connection);
我通过jQuery ajax提交了表单,它返回以下错误:

错误:插入到“类别”(名称)值(“某些测试值”)中

但是,如果我将
connection()
函数的整个代码放在我的查询之上,而不包括
common.php
,它就可以正常工作了!我猜可能有一些全球性的问题。我也尝试过全局
$connection
或使用singleton类,但没有成功。

函数
connection()
创建上下文或作用域。变量仅在函数期间存在,因此下面的
$connection
将不可用。有关变量范围的更多信息,请参阅。一种解决方案是在函数顶部添加
global$connection
,以允许在
connection()
函数外部设置
$connection
。您可以完全省略该函数,只需包含用于设置该信息的文件

function connection() {
    global $connection; //Add this line
    $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);
    } 
}
connection()
函数创建上下文或作用域。变量仅在函数期间存在,因此下面的
$connection
将不可用。有关变量范围的更多信息,请参阅。一种解决方案是在函数顶部添加
global$connection
,以允许在
connection()
函数外部设置
$connection
。您可以完全省略该函数,只需包含用于设置该信息的文件

function connection() {
    global $connection; //Add this line
    $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);
    } 
}
  • 返回
    $connection

    if ($connection->connect_error) {
      die($connection->connect_error);
    }
    return $connection
    
  • 分配给新的$connection变量

    $connection = connection();
    
  • 返回
    $connection

    if ($connection->connect_error) {
      die($connection->connect_error);
    }
    return $connection
    
  • 分配给新的$connection变量

    $connection = connection();
    


  • 首先检查您的
    common.php
    文件是否包含@prakashtank是我选中的,它包括警告:当使用
    mysqli
    时,您应该使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
    $\u POST
    $\u GET
    或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。值得注意的是,如果您只想使用核心PHP和
    mysqli
    ,这可能是PHP最薄弱的数据库接口,这将是一条艰难的道路。提供了很多关于如何更好地解决这个问题的建议,如果您致力于学习PHP,也值得探索。特别是对初学者友好,有很好的文档记录,并且有极好的社区支持。你不必为这样的事情纠缠不清。见鬼,甚至PDO也是处理数据库查询的更好的API,它是在第一次检查你的
    common.php
    文件是否包含时构建的@prakashtank是我选中的,它包括警告:当使用
    mysqli
    时,您应该使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
    $\u POST
    $\u GET
    或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。值得注意的是,如果您只想使用核心PHP和
    mysqli
    ,这可能是PHP最薄弱的数据库接口,这将是一条艰难的道路。提供了很多关于如何更好地解决这个问题的建议,如果您致力于学习PHP,也值得探索。特别是对初学者友好,有很好的文档记录,并且有极好的社区支持。你不必和Eloquent纠缠不清。见鬼,即使PDO是处理数据库查询的更好的API,而且它是正确构建的,如果
    connection()
    只返回
    $connection
    @Phil Apple and oranges,inIt会更好。他可以简单地完全省略函数,只包含
    common.php
    。如果
    connection()
    只返回
    $connection
    @Phil Apples and oranges会更好。他可以简单地完全省略函数,只包含
    common.php
    `问题解决了,我忘了将函数赋给变量。thanksIt很可能与
    返回
    行上的反勾号有关,它们不应该在那里。@tadman啊,我错过了这些!在列表中格式化代码并不总是显而易见的。我想OP是在尝试他们的best@Phil我只是猜测这就是问题所在,但现在看来是正确的。好主意`问题解决了,我忘了将函数赋给变量。thanksIt很可能与
    返回
    行上的反勾号有关,它们不应该在那里。@tadman啊,我错过了这些!在列表中格式化代码并不总是显而易见的。我想OP是在尝试他们的best@Phil我只是猜测这就是问题所在,但现在看来是正确的。好主意!