2012-06-03 110 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()才能獲取數據。