2012-06-03 3 views
0

Хорошо, мой запрос на вставку не работает на моем сервере. Вот код, который я бегу:php sql query не работает

<?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') !! –

ответ

2

Вы используете обратные выходы вместо котировок вокруг данных $name. Вот как я бы это сделать (с маскирование добавляют для предотвращения инъекций SQL):

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

Вам нужны двойные кавычки вокруг строкового значения в запросе.

Также не игнорируйте комментарий Эмиля Викстрема о mysql_real_escape_string или подготовленные операторы (поиск mysqli). Поскольку в моем примере здесь, если имя содержит двойную кавычку, оно сломает запрос, поэтому двойные кавычки в строке должны быть экранированы!

+0

Это отсутствует санитария, хотя –

+0

Ничего себе, это работает. Большое спасибо ^^ – razielsarafan

0

Вы фактически печатая запрос, а не печать результирующие строки из базы данных. Чтобы получить данные, вам необходимо использовать mysql_result().