Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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中向数据库中添加外键错误的新文件_Php_Mysql - Fatal编程技术网

在PHP中向数据库中添加外键错误的新文件

在PHP中向数据库中添加外键错误的新文件,php,mysql,Php,Mysql,我最近一直在做我的课程作业,一直在解决这个问题 情况是这样的: 用户从网站HTML请求艺术作品,需要将输入的数据(如必须制作艺术作品的用户ID)包含到SQL表中,但它给出了一个错误,即我无法修改从会话数据获取的外键 这是它显示的错误和代码本身 Error无法添加或更新子行:外键约束使project work.arts失败, 约束arts_ibfk_1用户ID引用UsersUsersUserId的foreign键` 有没有办法避免此错误?此错误仅意味着作为输入输入的For_UserID不是表“us

我最近一直在做我的课程作业,一直在解决这个问题

情况是这样的: 用户从网站HTML请求艺术作品,需要将输入的数据(如必须制作艺术作品的用户ID)包含到SQL表中,但它给出了一个错误,即我无法修改从会话数据获取的外键

这是它显示的错误和代码本身

Error无法添加或更新子行:外键约束使project work.arts失败, 约束arts_ibfk_1用户ID引用UsersUsersUserId的foreign键`


有没有办法避免此错误?

此错误仅意味着作为输入输入的For_UserID不是表“users”的有效现有UserID。
例如,如果您的表“users”中有3个用户的id分别为1、2、3,并且您尝试为必须制作art的用户输入id 4,它将抛出此错误,因为您的表“arts_ibfk_1”有一个与此表“users”相关的外键。

警告:您的代码容易受到SQL注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者使用恶意输入值破坏您的数据库。给出了风险的解释,以及如何使用PHP/mysqli安全地编写查询的一些示例。切勿将未初始化的数据直接插入SQL。按照现在编写代码的方式,有人很容易窃取、错误更改甚至删除您的数据。永远不要让您的web应用以root用户身份登录到数据库。Root可以做任何它喜欢的事情,所以除了SQL注入漏洞之外,这只会让您的数据库成为黑客们的一本打开的书。而是专门为此应用程序创建一个单独的用户帐户,该应用程序仅具有正常工作所需的权限。在开发或测试期间,甚至不要将根帐户用作快捷方式,因为您还需要测试您的帐户权限-否则,当您上线时,可能会出现与用户帐户设置相关的意外错误。无论如何,您需要检查$\u会话['UserID']中的值,然后检查users表中是否有包含该ID的行。错误是告诉您users表中没有匹配的ID。因此,要么您没有在数据库中创建该值,要么会话中存储的值不正确/丢失。
  <?php
    session_start();
    $genre=$_POST['genre'];
    $ext=$_POST['ext'];
    $desc=$_POST['desc'];
    $conn= new mysqli("127.0.0.1", "root", "","project work") or die ("Can't connect to db");

    if (($genre!="") and ($ext!="") and ($desc!="")) {

    $query= "INSERT INTO `Arts` (`Genre`,`Extension`,`Description`,`For_UserID`,`Is_Done`) 

    VALUES ('$genre','$ext','$desc','{$_SESSION['UserID']}','0')";

    if ($conn->query($query)== TRUE)    
        echo "Succesfully!" ;   
    else  die('error' .$conn->error);
    }
    else echo "Fill all the fields, please!";
    ?>