Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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插入MySQL数据库时的空白数据_Php_Mysql - Fatal编程技术网

使用PHP插入MySQL数据库时的空白数据

使用PHP插入MySQL数据库时的空白数据,php,mysql,Php,Mysql,我制作了一个表单来插入和修改项目中的类别。 当我点击submit时,我将记录提交到数据库中,但它看起来是空的! 如果我转到数据库字段,自己写文本,它在MySQL中会显示良好,并且????在浏览器中 以下是我编写的代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <

我制作了一个表单来插入和修改项目中的类别。 当我点击submit时,我将记录提交到数据库中,但它看起来是空的! 如果我转到数据库字段,自己写文本,它在MySQL中会显示良好,并且????在浏览器中

以下是我编写的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>

 <?php
$con = mysql_connect("localhost","user","pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("mydb", $con);

$sql="INSERT INTO categories (name, parent_id,description)
VALUES
('$_POST[name]','$_POST[parent_id]','$_POST[description]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>

<form action="ins.php" method="post">
category: <input type="text" name="name" /><br><br>
parent: <input type="text" name="parent_id" /><br><br>
description: <input type="text" name="description" /><br><br>

<input type="submit" />
</form>

</body>
</html>

您必须在SQL请求中的索引名周围使用引号,因为$\u POST是一个数组:

$sql="INSERT INTO categories (name, parent_id,description)
VALUES
('".$_POST["name"]."','".$_POST["parent_id"]."','".$_POST["description"]."')";
但一般来说,请不要直接信任用户在脚本中发布的内容,以避免SQL注入。您可以使用更好、更安全的mysqli::query:


将此语句用于代码

if( isset($_POST['name']) && isset($_POST['parent_id']) && isset($_POST['description']) )

//your insert query
在数据库中插入值时请提供引号

不要忘记安全

我认为编码有问题

在插入数据之前启动查询:

$sql = 'set names `utf-8`'; (for example)

尝试在语句中使用双引号,如下所示:

$sql=插入类别名称、父项id、说明 价值观 “.$”贴子['name'.],“.$”贴子['parent\u id'.],“.$”贴子['description'.]

这里有很多问题

$\u POST[name]应为$\u POST['name'] 即使未提交表单,您的查询也将运行。 您正在使用不推荐使用的mysql_*函数。使用PDO或mysqli 您的代码易受sql注入攻击 有了这些,你需要做的就是

为了验证表单是否已提交,请使用

if( !empty($_POST['name']) && 
!empty($_POST['parent_id']) && 
!empty($_POST['description']) )
如果允许空值,则使用isset

然后运行查询

在PDO中,代码如下->

<?php
// configuration
$dbtype     = "mysql";
$dbhost             = "localhost";
$dbname     = "mydb";
$dbuser     = "user";
$dbpass     = "pass";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$sql = "INSERT INTO categories (name, parent_id,description)
        VALUES
       (?,?,?)";
$q = $conn->prepare($sql);
$q->execute(array($_POST[name],$_POST[parent_id],$_POST[description]));


?>
这只是一个开始。您可以使用try和catch块捕获异常


在运行查询之前,请检查表单是否由提交人提交!空或如上所述设置。

使用下面的插入查询插入数据,我相信它肯定会对您有所帮助

$sql="INSERT INTO categories (name,parent_id,description)
VALUES
('".$_POST['name']."','".$_POST['parent_id']."','".$_POST['description']."')";
试试这个


我也面临同样的问题

像这样继续插入查询,这对我有帮助

$email_id = $_POST['email_id'];
$device_id = $_POST['device_id'];
***For My Sqli***
if(!empty($email_id ))
    {
        $result_insert = mysqli_query($db_conn,"INSERT INTO tableName (user_email, user_device_id,last_updated_by) VALUES('".$email_id."', '".$device_id."', '".$email_id."') ");

        if(mysqli_affected_rows($db_conn)>0)
        {
            $response["success"] = 1;
            $response["message"] = "Successfully Inserted";
        }
        else
        {
            $response["success"] = 0;
            $response["message"] = "Problem in Inserting";
        }
    }
    else
    {

        $response["success"] = 4;
        $response["message"] = "Email id cannot be Blank";
    }
}
///////////////////////////////////////////////////////////////////////////////
 **For My Sql**
if(!empty($email_id ))
    {
        $result_insert = mysql_query("INSERT INTO tableName (user_email, user_device_id,last_updated_by) VALUES('".$email_id."', '".$device_id."', '".$email_id."') ");

        if(mysql_affected_rows()>0)
        {
            $response["success"] = 1;
            $response["message"] = "Successfully Inserted";
        }
        else
        {
            $response["success"] = 0;
            $response["message"] = "Problem in Inserting";
        }
    }
    else
    {

        $response["success"] = 4;
        $response["message"] = "Email id cannot be Blank";
    }
}

注意:这里我只检查了电子邮件。

首先清理您的用户输入

如果您希望使用数组中的值而不使用其他人提到的所有串联,请使用{}环绕数组访问器

$sql="INSERT INTO categories (name, parent_id, description)
VALUES
('{$_POST['name']}','{$_POST['parent_id']}','{$_POST['description']}')";
例如,要清理$\u POST,这样做是一个好的开始。这是我以前的代码的一部分。正如其他人写的那样,使用mysqli代替

function clean_array($t_array)
{
    foreach($t_array as $key=>$value)
        $array[$key] = mysql_real_escape_string( trim($value) );

    return $t_array;
}

顺便说一句,phpmyadmin中的编码是utf-8_unicode_ci。引擎是MyISSAM您是否注意到在加载pge时您已经在运行查询了?启用错误报告。排除您的代码易受sql注入攻击,并且您正在使用不推荐的mysql_*函数这一事实,应该是$\u POST['name']一些链接,供您进一步研究:,,解析错误:语法错误,ins.php中的意外“}”,第25行,我的代码中没有括号,解析错误在代码的其他地方,可能是某些条件括号未终止。您可以使用IDE的语法突出显示进行检查。虽然提供代码是好的,但如果您可以添加对更改的解释,则更好。
<?php
if(isset($_POST['submit'])) {
    $con = mysql_connect("localhost","user","pass");
    if (!$con){
      die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("mydb", $con);

    $sql="INSERT INTO categories (name, parent_id,description) VALUES
    ('".$_POST['name']."','".$_POST['parent_id']."','".$_POST['description']."')";

    if (!mysql_query($sql,$con)) {
      die('Error: ' . mysql_error());
    } else {
        echo "1 record added";
    }
    mysql_close($con);
}
?>
<html>
<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
category: <input type="text" name="name" /><br><br>
parent: <input type="text" name="parent_id" /><br><br>
description: <input type="text" name="description" /><br><br>
<input type="submit"name="submit" value="Submit" />
</form>
</body>
</html>
$email_id = $_POST['email_id'];
$device_id = $_POST['device_id'];
***For My Sqli***
if(!empty($email_id ))
    {
        $result_insert = mysqli_query($db_conn,"INSERT INTO tableName (user_email, user_device_id,last_updated_by) VALUES('".$email_id."', '".$device_id."', '".$email_id."') ");

        if(mysqli_affected_rows($db_conn)>0)
        {
            $response["success"] = 1;
            $response["message"] = "Successfully Inserted";
        }
        else
        {
            $response["success"] = 0;
            $response["message"] = "Problem in Inserting";
        }
    }
    else
    {

        $response["success"] = 4;
        $response["message"] = "Email id cannot be Blank";
    }
}
///////////////////////////////////////////////////////////////////////////////
 **For My Sql**
if(!empty($email_id ))
    {
        $result_insert = mysql_query("INSERT INTO tableName (user_email, user_device_id,last_updated_by) VALUES('".$email_id."', '".$device_id."', '".$email_id."') ");

        if(mysql_affected_rows()>0)
        {
            $response["success"] = 1;
            $response["message"] = "Successfully Inserted";
        }
        else
        {
            $response["success"] = 0;
            $response["message"] = "Problem in Inserting";
        }
    }
    else
    {

        $response["success"] = 4;
        $response["message"] = "Email id cannot be Blank";
    }
}
$sql="INSERT INTO categories (name, parent_id, description)
VALUES
('{$_POST['name']}','{$_POST['parent_id']}','{$_POST['description']}')";
function clean_array($t_array)
{
    foreach($t_array as $key=>$value)
        $array[$key] = mysql_real_escape_string( trim($value) );

    return $t_array;
}