twilio sms mysql插入

时间:2012-12-29 17:03:34

标签: php mysql twilio

我正在尝试将来自Twilio的短信内容插入到mysql中。底部的响应正确返回,但数据未插入到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>

2 个答案:

答案 0 :(得分:1)

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

您有以下问题。

  1. 表名称为table。表名不能是table table是MySQL关键字
  2. mysql中的
  3. FromTo是关键字
  4. 在此查询中转义关键字(带有`)以使其正常工作。喜欢这个

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

答案 1 :(得分: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']);