2012-11-04 23 views
0

我真的不知道我做错了什么。所有其他查询(SELECT-queries)都没有任何问题,但这似乎不起作用。有任何想法吗?我无法使用INSERT INTO来使用php

<?php 
session_start(); 
$host="*******"; // Host name 
$username="*******"; // Mysql username 
$password="*******"; // Mysql password 
$db_name="*******"; // Database name 
$from = $_GET['from']; 
$to = $_GET['to']; 

// Connect to server and select databse. 
$con = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name",$con)or die("cannot select DB"); 

mysql_query("INSERT INTO message('from', 'to', 'message', 'confirm') VALUES (2,3,'would like to add you as a friend',1)"); 

echo'The request has been sent.'; 
+0

试着回复''message''上的嘀嗒声 –

+5

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护,[弃用过程](http://j.mp/Rj2iVR)已经开始。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 “ –

+0

”似乎不起作用“不是问题描述。请向我们提供“不起作用”的必要细节和任何其他线索,例如错误消息。 – Gordon

回答

4

您正在使用保留字,作为您的字段名称。用反引号将它们转义出来,而不是引号。

 mysql_query("INSERT INTO message(`from`, `to`, `message`, `confirm`) VALUES (2,3,'would like to add you as a friend',1)"); 

见的MySQL的完整列表保留字here

+0

就是这样,谢谢! :) –

1

作为一个经验法则,始终使用内置功能or die(mysql_error());在你的查询结束,这将输出在明文查询的实际问题,所以这样做之前,你自定义。在这种情况下,改变你的代码

mysql_query("INSERT INTO message('from', 'to', 'message', 'confirm') VALUES (2,3,'would like to add you as a friend',1)") or die(mysql_error()); 

而这些到:

$con = mysql_connect("$host", "$username", "$password")or die(mysql_error()); 
mysql_select_db("$db_name",$con)or die(mysql_error()); 

你会再看看是什么问题。

1

检查是否在消息的某一列上有唯一索引。

3

您需要对名为'from'和'to'的列进行回跳操作,或将列重命名为非保留字。这会咬你和其他人永远在这张桌子上查询,所以我倾向于重新命名。

`from`, `to` 

请众神承诺你永远都不会命名列或再次数据库MySQL的保留字。

+0

对不起妈妈.... –

1

你错过了$ CON变量在您的mysql_query(“插入”)功能:“从”你能] 并命名,例如列“T使用简单引号“”“你必须使用这些:‘``’

我强烈建议更换你写的一切是这样的:

mysql_query("insert into message(from, to, message, confirm) values (2,3,'would like to add you as a friend',1);", $con); 

即使您不要在命名列上键入引号仍然工作正常,甚至使用小型大写字母。

如果您正在使用$变量参数连接不使用引号,例如:

$con = mysql_connect($host, $username, $password) or die("cannot connect"); 

,引号里的变量是只为SQL字符串查询。