2012-12-29 71 views
2

我試圖從短信插入內容從Twilio到MySQL。底部的響應恢復正常,但數據沒有被插入到mysql中。我不確定我錯過了什麼。任何幫助?Twilio短信mysql插入

<?php 
header("content-type: text/xml"); 
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 

$From = $_REQUEST['From']; 
$To = $_REQUEST['To']; 
$Body = $_REQUEST['Body']; 

$host="host"; // Host name 
$username="user"; // Mysql username 
$password="password"; // Mysql password 
$db_name="database_name"; // Database name 
$tbl_name="table"; // Table name 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$sql="INSERT INTO $tbl_name (From, To, Body) VALUES ('$From', '$To', '$Body')"; 
$result=mysql_query($sql); 
?> 

<Response> 
<Sms><?php echo $From ?> has messaged <?php echo $To ?> with the message of <?php echo $Body ?></Sms> 
</Response> 

回答

1
"INSERT INTO $tbl_name (From, To, Body) VALUES ('$From', '$To', '$Body')"; 

你在這裏以下problmes。

  1. 表名是table。表名不能是tabletable是一個MySQL關鍵字
  2. FromTo是mysql中的關鍵字

使用此查詢中的關鍵字(帶有`)來使其工作。像這樣

"INSERT INTO `$tbl_name` (`From`, `To`, `Body`) VALUES ('$From', '$To', '$Body')"; 
+0

感謝您的回覆!關於問題#1 - 表名實際上是'sms',而不是表格,所以這不應該成爲問題。我將變量更改爲'sender'和'dest',所以我不再遇到這個問題。仍然沒有運氣... – user1935559

+0

我正在做twilio api幾乎相同的事情。但我存儲更多信息 –

+0

Shiplu - 也許你可以指出我正確的方向? – user1935559

0

您不檢查mysql_error()的輸出。 FROMTO都是MySQL reserved keywords,必須在反引號中引用它作爲列名稱。

$sql = "INSERT INTO `$tbl_name` (`From`, `To`, `Body`) VALUES ('$From', '$To', '$Body')"; 
$result = mysql_query($sql); 
if (!$result) { 
    // Problem! 
    echo mysql_error(); 
} 

除此之外,您的腳本容易受到SQL注入的影響。至少,您必須對每個值調用mysql_real_escape_string()。考慮切換到支持預處理語句的API,如PDO或MySQLi。

$From = mysql_real_escape_string($_REQUEST['From']); 
$To = mysql_real_escape_string($_REQUEST['To']); 
$Body = mysql_real_escape_string($_REQUEST['Body']); 
+0

關於安全性,我會在確認腳本正確插入數據後添加它。我檢查了錯誤,但沒有收到錯誤,但數據不在表格中... – user1935559