Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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,我一直试图将数据插入数据库,但有一个愚蠢的错误,我看不出来。 在users表和tilaus表之间还应该有一个连接内部联接。然而,我不知道在我尝试将一些数据插入tilaus表时是否必须始终添加用户id 表结构: CREATE TABLE `tilaus` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tilaaja` varchar(120) NOT NULL, `kuvaus` date NOT NULL, `tilauspvm` date DEF

我一直试图将数据插入数据库,但有一个愚蠢的错误,我看不出来。 在users表和tilaus表之间还应该有一个连接内部联接。然而,我不知道在我尝试将一些数据插入tilaus表时是否必须始终添加用户id

表结构:

  CREATE TABLE `tilaus` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `tilaaja` varchar(120) NOT NULL,
 `kuvaus` date NOT NULL,
 `tilauspvm` date DEFAULT NULL,
 `aloituspvm` date DEFAULT NULL,
 `valmistumispvm` date DEFAULT NULL,
 `hyvaksymispvm` date DEFAULT NULL,
 `tehtytyo` date DEFAULT NULL,
 `tunti` int(3) DEFAULT NULL,
 `tarvikkeet` varchar(200) DEFAULT NULL,
 `kustannukset` int(5) DEFAULT NULL,
 `user_id` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `id` (`id`),
 KEY `user_id` (`user_id`),
 CONSTRAINT `tilaus_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
php代码:

<?php
session_start();

if(!isset($_SESSION['sess_user_id']) || (trim($_SESSION['sess_user_id']) == ''))
    {
        header('Location: login.html');
        exit;
    }
//settings
$username = "root";
$password = "";
$hostname = "localhost"; 

$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL"); //checking connection
echo "Connected to MySQL<br>"; // connection established


$tilaaja = $_GET['tilaaja'];
$tyonkuvaus = $_GET['tyonkuvaus'];
$time = now();
$userid = $_SESSION['sess_user_id'];

echo $tilaaja; //JUST A DUMB TEST.. NOTHING TO WORRY ABOUT
echo $tyonkuvaus; // TESTING IF VAIRABLES ARE GETTING THE DATA ALREADEY OR NOT.
$result = mysql_query("INSERT INTO `tilaus`(`tilaaja`, `kuvaus`, `tilauspvm`, `user_id`) 
        VALUES ('$tilaaja','$tyonkuvaus','$time','$userid')");

?>
<?php
session_start();

if(!isset($_SESSION['sess_user_id']) || (trim($_SESSION['sess_user_id']) == ''))
    {
        header('Location: login.html');
        exit;
    }

//settings
$username = "root";
$password = "";
$hostname = "localhost"; 

$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL"); //checking connection

$tilaaja = $_GET['tilaaja'];
$tyonkuvaus = $_GET['tyonkuvaus'];
$time = date("Y-m-d");
$userid = $_SESSION['sess_user_id'];

$result = mysql_query("INSERT INTO `tilaus`(`tilaaja`, `kuvaus`, `tilauspvm`, `user_id`) 
        VALUES ('$tilaaja','$tyonkuvaus','$time','$userid')");

?>

谢谢。

php现在没有函数,这是mysql的函数

所以使用dateY-m-dh:i:s

或者现在直接进入查询

如下

$time = date("Y-m-d H:i:s");

您正在使用mysql,它已被弃用,将来将不可用

另外,谷歌的“MySQL注入”以及如何防止它,因为有人现在就可以侵入你的数据库,修改或删除任何东西

尝试使用,回显mysql\u错误;找出到底出了什么问题

作为奖励,您可以在insert查询中将UserId设置为NULL,并且只要在该列上设置了主自动递增键,就会为您创建该列。

在您的表中,您的user\u id默认为NULL,因此答案是肯定的,您可以添加一个没有user\u id的记录,但是您需要在user\u id字段中设置NULL,或者只是避免在查询中提及它

在代码中,如果user_id==null,则在insert查询中输入一个空字符串,这样它会将错误作为无效值,因为空字符串不同于null。

如果字段tilauspvm仅是日期类型,则应使用:

$time = date("Y-m-d");
您的php代码:

<?php
session_start();

if(!isset($_SESSION['sess_user_id']) || (trim($_SESSION['sess_user_id']) == ''))
    {
        header('Location: login.html');
        exit;
    }

//settings
$username = "root";
$password = "";
$hostname = "localhost"; 

$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL"); //checking connection

$tilaaja = $_GET['tilaaja'];
$tyonkuvaus = $_GET['tyonkuvaus'];
$time = date("Y-m-d");
$userid = $_SESSION['sess_user_id'];

$result = mysql_query("INSERT INTO `tilaus`(`tilaaja`, `kuvaus`, `tilauspvm`, `user_id`) 
        VALUES ('$tilaaja','$tyonkuvaus','$time','$userid')");

?>
ini设置“显示错误”,1;在开发过程中

从PHP5.5.0开始,mysql_*函数就被弃用,不建议编写新代码,因为它将在将来被删除。相反,应该使用或扩展名

您的桌子有:


这意味着,在tilaus表中添加记录时,您正在添加user_id字段。此用户id是对用户表中id字段的引用。这意味着,如果user_id=5,那么id=5应该存在于users表中。

明智的一句话:停止你现在正在做的事情,开始SQL注入,不要在新代码中使用不推荐的mysql_*PHP函数。改为查看PDO或mysqli。是的,每个插入都必须有一个用户id。此值必须存在于用户表中。您的外键约束强制执行此操作。谢谢lc,我知道此代码充满了安全威胁和垃圾。然而,根据我目前的php课程,我必须在我的最终项目中使用这种方法,然后在PHP2课程中,我们将使用更安全的代码..等等。所以,现在重要的是用mysql完成任务,getI尝试添加echo mysql\u错误;它什么也没表现出来。此外,userid尝试将其设置为$userid,即存储在会话中的实际用户id,并尝试使用NULL,但仍不插入任何内容尝试使用**$time=dateY-m-d H:i:s;**。但是,无法从表单发送数据?是的,从echo命令中,我可以看到数据已准备好插入数据库。您可以发布您正在回显的数据吗?这是我试图调用的url,您可以看到GET content php/newTilaus.php?tilaaja=ssss&tyonkuvaus=ssss&save=Tee+uusi+tilaus当url打开时,这是连接到MySQL的内容ssss谢谢,我已经改正了。另外,我注意到表kuvaus设置为date,而它应该是Varchar或longtext,并对其进行了更正。顺便说一句,这是我试图调用的url,您可以看到获取内容php/newTilaus.php?tilaaja=ssss&tyonkuvaus=ssssss&save=Tee+uusi+tilaus当url打开时,这是连接到MySQL的内容ssss-BTW,错误报告e\u ALL;和ini设置“显示错误”,1;没有显示任何errors@CsharpNewbie在users表中,user_id如何为FK,请检查此表中的值是否为FK。请您进一步解释?tilaus表中的用户id为FK。此外,users表包含“id”列。所以我执行的sql是ALTERTABLE tilaus ADD COLUMN user\u id int,ADD FOREIGN KEY user\u id引用usersid@CsharpNewbie编辑我的帖子。
error_reporting(E_ALL);
CONSTRAINT `tilaus_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)