2013-10-28 130 views
0

我有一個帶有「AllParties」表的MySQL數據庫。當我使用PHP(下面)將數據插入到該表中時,我沒有收到錯誤,但是數據未插入到表中。我嘗試從MySQL服務器獲取錯誤報告,而且含糊不清地說,它說MySQL語法存在錯誤。請注意我在Mac CodeRunner中運行我的代碼,可能是這個問題?另外,$ con是一個成功的連接。通過PHP將數據插入到MySQL表中時出錯

<?php 
$con=mysqli_connect("sql3.freemysqlhosting.net","*********","********","*********"); 

$name = "Will's Party"; 
$date = 'October 1st, 2013'; 
$housenum = '333 East Street'; 
$city = "Golden Gate"; 
$state = "California"; 
$time = "7:00"; 
$tag = "Serra"; 

mysqli_select_db('AllParties', $con); 

$alpha = mysqli_query($con, 'INSERT INTO AllParties(Party Name, Date, House number and  street name, City, State, Time, Tag) VALUES("$name","$date","$housenum","$city","$state","$time","$tag")'); 
?> 
+2

你認爲''門牌號和街道name''一個適當的列名? –

+0

'and'和'street name'之間有7個空格。這是否反映在列名中? –

+0

請在編寫任何**更多SQL接口代碼之前,您必須閱讀[正確的SQL轉義](http://bobby-tables.com/php)以避免嚴​​重的[SQL注入漏洞](http: //bobby-tables.com/)。當使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **從不**使用字符串插值來實現這一點。 – tadman

回答

0

任何列名與它的空間,並且在命名列一樣,就是讓開發者很不高興一個偉大的方式,需要轉義:

INSERT INTO AllParties (`Party Name`, ...) 

的反引號,不是正規的報價,是用於轉義數據庫,表和列名稱。常用引號'"用於字符串。

-2
<?php 
$con=mysqli_connect("sql3.freemysqlhosting.net","*********","********","*********"); 

$name = 'Will\'s Party'; 
$date = 'October 1st, 2013'; 
$housenum = '333 East Street'; 
$city = 'Golden Gate'; 
$state = 'California'; 
$time = '7:00'; 
$tag = 'Serra'; 

mysqli_select_db('AllParties', $con); 

$alpha = mysqli_query($con, "INSERT INTO AllParties(`Party Name`, `Date`, `House number and street name`, `City`, `State`, `Time`, `Tag`) VALUES('{$name}','{$date}','{$housenum}','{$city}','{$state}','{$time}','{$tag}')"); 
?> 

{$ X}將EVAL在X線

相關問題