我试图在php文件上传系统中将userid插入到我的表中。除了userid之外,其他任何值都正确插入.Heres代码:
<?php
session_start();
$userid = $_SESSION['id'];
$id1 = $_GET['id'];
include_once "connect_to_mysql.php";
function savedata(){
global $_FILES, $_POST, $putItAt;
$sql = "INSERT INTO files (
ID ,
userid ,
Time ,
FileLocation ,
IP ,
Title
)
VALUES (
NULL ,'$id1' , UNIX_TIMESTAMP( ) , '".mysql_real_escape_string($putItAt)."', '".$_SERVER['REMOTE_ADDR']."', '".mysql_real_escape_string($_POST['title'])."'
);";
mysql_query($sql);
}
任何方式?
答案 0 :(得分:3)
根据评论,我认为问题是$id1
功能无法访问savedata()
。所以你需要声明$id1
全局内部函数或在你的sql-query中使用$_GET['id']
,比如VALUES (NULL , " . $_GET['id'] . " , UNIX_TIMESTAMP( )
。
答案 1 :(得分:1)
可能出现的问题:
1。我认为问题是您在SQL查询中将$id1
作为字符串传递,但我认为userid
的数据类型为int
。数据库结构。
尝试这样的事情:
$sql = "INSERT INTO files (
ID ,
userid ,
Time ,
FileLocation ,
IP ,
Title
)
VALUES (
NULL , " . $id1 . " , UNIX_TIMESTAMP( ) , '".mysql_real_escape_string($putItAt)."', '".$_SERVER['REMOTE_ADDR']."', '".mysql_real_escape_string($_POST['title'])."'
);";
2。您还需要检查要插入数据库的userid
:
$userid = $_SESSION['id'];
$id1 = $_GET['id'];
3。同时print_r( $_SESSION );
和print_r( $_GET );
检查数组中是否存在必需的值。
4。同时阅读我在阅读您的代码时遗漏的Den's Answer。
所以你的函数签名可能是这样的:
function savedata( $id1 ) {
------
}
在调用时将$id1
传递给savedata
。
答案 2 :(得分:0)
尝试使用此查询。它可能适合你。
$ sql =“INSERT INTO文件(ID
,userid
,Time
,FileLocation
,IP
,Title
)
VALUES(NULL,'$ id1',UNIX_TIMESTAMP(),'“。mysql_real_escape_string($ putItAt)。”','“。$ _ SERVER ['REMOTE_ADDR']。”','“。mysql_real_escape_string($ _ POST ['title' ])。“”
)“;
有些时候因为mysql的reserve关键字会导致这种问题。所以尝试使用`之前和之后或字段名称。