PHP - mysql_query无法插入新行

时间:2015-07-26 15:25:57

标签: php mysql phpmyadmin

当我运行下面的代码向phpMyAdmin数据库插入一个新行时,程序死于mysql_query()的插入部分。它显示“无法插入”。 我的代码出了什么问题?有人可以帮助我吗?

$connection = mysql_connect($hostname, $username, $password)
or die("Cannot connect db");

mysql_select_db("eLink", $connection)
    or die("Cannot select db");

$send_id = $_REQUEST['send_id'];
$to_id = $_REQUEST['to_id'];
$msg = $_REQUEST['msg'];
$type = $_REQUEST['type'];

$time = time() + (60*60*6);
$send_time = date('Y-m-d h:i:s', $time);

mysql_query("INSERT INTO msg_record (send_id, to_id, msg, type, send_time) 
                VALUES (".$send_id.",".$to_id.",".$msg.",".$send_time.")")
            or die("Cannot insert");    

die(json_encode(array('send_id'=>$send_id, 'to_id'=>$to_id, 'msg'=>$msg, 'type'=>$type, 'send_time'=>$send_time)));
?>

3 个答案:

答案 0 :(得分:1)

首先,您尝试插入5个值send_id, to_id, msg, type, send_time,但只发送了4个$send_id, $to_id, $msg, $send_time

并且所有字符串类型的变量都必须放在引号'"之间。

并且发现错误真的很快就会使用类似的东西

mysql_query("INSERT INTO msg_record (send_id, to_id, msg, type, send_time) 
                 VALUES ($send_id, $to_id, '$msg', '$type', '$send_time')")
or die(mysql_error($connection));

但仅在开发模式下使用它!

答案 1 :(得分:0)

尝试将单引号(')括起来

mysql_query("INSERT INTO msg_record (send_id, to_id, msg, type, send_time) 
            VALUES ('$send_id','$to_id','$msg','$send_time')")
or die("Cannot insert");

还建议您出于安全目的使用mysqliPDO

答案 2 :(得分:0)

正如我所看到的那样,您错过了引入数据库的字符串的引号,并且您缺少插入类型。:

mysql_query("INSERT INTO msg_record (send_id, to_id, msg, type, send_time) 
                VALUES ($send_id, $to_id, '$msg', '$type', '$send_time')")
            or die("Cannot insert");   

但普通的mysql并不安全,所以你应该考虑使用mysqli或pdo。