INSERT INTO mysql问题

时间:2014-05-18 16:18:46

标签: php mysql

我一直在尝试将数据插入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')");

?>

谢谢。

4 个答案:

答案 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起不推荐使用,不建议用于编写新代码,因为将来会删除它们。相反,应使用mysqliPDO_MySQL扩展名。

您的表格有:

CONSTRAINT `tilaus_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)

这意味着,在tilaus表中添加记录时,您要添加user_id字段。此user_id是对id表中users字段的引用。这意味着,如果user_id = 5id = 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不同。