2012-06-03 111 views
0

好吧,我的插入查询不能在我的服务器上工作。这里是代码我运行:php sql查询不起作用

<?php 
$name = $_GET['name']; 
$database_servidor = "localhost"; 
$database_usuario = "username"; 
$database_pass = "pass"; 
$database_nombre = "table"; 
$conexion = mysql_connect($database_servidor, $database_usuario, $database_pass); 
mysql_select_db($database_nombre, $conexion); 
$query = "INSERT INTO `nombre`(`card`) VALUES (`$name`)"; 
echo $query; 
$sql = mysql_query($query) or die (mysql_error()); 
?> 

这里的结果:

http://santirivera92.co.cc/insert.php?name=Santiago%20Rivera

我在做什么错?

+2

使用数据而不是反引号的普通引号:''' –

+2

不要忘记'mysql_real_escape_string($ _ GET ['name'])'或切换到预处理语句/ PDO。 –

+0

是的,我喜欢把它写成“INSERT INTO nombre('card')VALUES('”。$ name。“')”; //你在'nombre'('card')之间没有空格! – 2012-06-03 15:32:20

回答

2

您正在使用反引号而不是引号围绕$name数据。这是我会怎么做(与逃逸加入防止SQL注入):

$query = sprintf('INSERT INTO `nombre`(`card`) VALUES ("%s")', 
       mysql_real_escape_string($name)); 
1
$query = 'INSERT INTO `nombre`(`card`) VALUES ("' . $name . '")'; 

您需要在查询中的字符串值周围使用双引号。

也不要忽略EmilVikström关于mysql_real_escape_string或准备语句(搜索mysqli)的评论。因为在我的示例中,如果名称包含双引号,它将打破查询,所以字符串中的双引号必须转义!

+0

这是缺少卫生设施,虽然 –

+0

哇,它的工作原理。非常感谢你^^ – razielsarafan

0

你实际上是在打印查询,而不是从数据库打印结果行。您需要使用mysql_result()才能获取数据。