当我运行下面的代码向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)));
?>
答案 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");
答案 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。