INSERT INTO不向数据库添加任何内容

时间:2014-10-29 00:21:36

标签: php mysql

我正在努力让INSERT INTO工作。

if (isset ($_POST['send']) ){
mysql_query('INSERT INTO msg (message, receiver, sender) VALUES ("'.$_POST["message"].', '.$_GET["user"].', '.$sendernick["nick"].'") ');
}

我试图回显每一个变量,然后出现。 但是这个插入没有增加我的数据库。 我在这里搞砸了什么吗?

要查看错误,我添加了此内容,但没有显示:

error_reporting(E_ALL); 
ini_set('display_errors','1');

2 个答案:

答案 0 :(得分:1)

你忘记了双引号:

mysql_query( 'INSERT INTO msg (message, receiver, sender) VALUES ( "'.$_POST["message"].'", "'.$_GET["user"].'", "'.$sendernick["nick"].'" )' );

另外,请阅读参数绑定和sql注入How can I prevent SQL injection in PHP?

答案 1 :(得分:1)

您应该避免使用mysql_*函数,因为它们已被弃用,不再受支持!请考虑使用PDO,因为它提供了连接到所有类型数据库的常用方法。 Mysqli_*函数也是一个选项,但这会限制您只使用MySQL

以下是如何使用PDO并使用预准备语句使查询正常工作的示例:

// connect.php
$db_host = '127.0.0.1'; 
$db_user = 'user';      
$db_pass = 'pass';
$db_name = 'database_name';
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_pass);

// the-script-youre-posting-to.php
require('connect.php');

$message = $_POST['message'];
$receiver = $_GET["user"];
$sender = $sendernick["nick"];

// Using prepared statements almost eliminates the possibility of SQL Injection.
$stmt = $db->prepare("INSERT INTO msg(message, receiver, sender) VALUES (:message, :receiver, :sender)");
$stmt->bindParam(':message', $message);
$stmt->bindParam(':receiver', $receiver);
$stmt->bindParam(':sender', $sender);
$stmt->execute();

有关预准备语句的更多信息,请查看PHP manual