我一直在尝试将数据插入db,但是有一些我看不到的愚蠢错误。 用户表和tilaus表之间也应该有一个“INNER JOIN”连接。但是,当我尝试将一些数据插入到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')");
?>
谢谢。
答案 0 :(得分:2)
php没有now()函数它是mysql的函数
所以请使用date("Y-m-d H:i:s")
或将NOW()
直接放入查询
如下所示
$time = date("Y-m-d H:i:s");
(或)
VALUES ('$tilaaja','$tyonkuvaus',NOW(),'$userid')"
答案 1 :(得分:1)
您的字段tilauspvm
仅为date
类型,您应该使用:
$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')");
?>
将错误报告添加到文件顶部
error_reporting(E_ALL);
ini_set('display_errors', 1);
正在开发中。
mysql _ * 函数自PHP 5.5.0起不推荐使用,不建议用于编写新代码,因为将来会删除它们。相反,应使用mysqli或PDO_MySQL扩展名。
您的表格有:
CONSTRAINT `tilaus_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
这意味着,在tilaus
表中添加记录时,您要添加user_id
字段。此user_id
是对id
表中users
字段的引用。这意味着,如果user_id = 5
,id = 5
表格中应该存在users
。
答案 2 :(得分:0)
您正在使用{{1>},已弃用,以及将来无法使用。
此外,谷歌&#39; MySQL注入&#39; 以及如何防止它,因为有人可能现在侵入您的数据库并更改或删除任何。
尝试使用mysql
找出确切的错误。
作为奖励,您可以在插入查询中将echo mysql_error();
设置为UserId
,只要在该列上设置了主要的自动递增键,就会为您创建它。 / p>
答案 3 :(得分:0)
在你的表中,user_id
默认为null,所以答案是&#34; YES&#34;您可以添加没有user_id
的记录,但是您需要在user_id
字段中设置NULL,或者只是避免在查询中提及它。
在代码中,如果user_id == null,则在插入查询中放置一个空字符串(例如&#39;&#39;),因此它应该将错误视为无效值,因为空字符串与null不同。