0

在我的一个脚本中,php $_POST 正确地声明为一个变量。当我回显变量时,它会正确显示,但是,当我检查数据库时,它没有正确插入。它显示为空白。所以我的猜测是变量没有问题,因为它被正确地回调了。不知道插入的时候有什么问题。

如果需要,这是一个 twilio 应用程序,因此该应用程序正在从 twilio 应用程序中提取录制 URL,并且我正在从您录制的表单中传递一个值。我只是为那些熟悉 twilio 应用程序的人说明这一点。

$sayid = $_SESSION['id'];
$hearid = "01";
$sayurl = $_REQUEST['RecordingUrl'];
$topic = $_POST['topic'];



mysql_query("INSERT INTO says (say, hear, sid, time_sent, happy) 
        VALUES('$sayid', '$hearid', '$sayurl.mp3', now(), '$topic' )"); 


echo $topic;

我愿意接受建议,我会尝试它们,并告诉你它们是否有效或现在有效。

编辑如果我将可变的 $topic 更改为 = "whatever",它将正确地将 "whatever" 发布到数据库,但是一旦我将其更改为 $_POST['topic'] 它就会开始再次发布一个空白值。但是如果我在任何地方回显 $topic 它将发布正确的 $_POST 值

编辑#2 好的新更新,所以我将变量声明更改为 $sayid = "20"; $hearid = "01"; $topic = $_POST['topic']; $sayurl = $_REQUEST['RecordingUrl']; 而不是 $sayid = "20"; $hearid = "01"; $sayurl = $_REQUEST['RecordingUrl']; $topic = $_POST['topic']; 我现在得到了 php 脚本的输出 CREATING 2 NEW RECORDS,其中一个包含除了 $topic 之外的所有内容,另一个只有 $topic,所以他们显然发布了所有字段,但是在两个不同的行!大声笑哇到底是怎么回事

4

3 回答 3

2

利用:

$sayid = mysql_real_escape_string($_SESSION['id']);
$hearid = "01";
$sayurl = mysql_real_escape_string($_REQUEST['RecordingUrl']);
$topic = mysql_real_escape_string($_POST['topic']);
$topic2 = mysql_real_escape_string($_POST['topic']);

$query = "INSERT INTO says
            (say, hear, sid, time_sent, happy, sad)
          VALUES
            ('$sayid', '$hearid', '$sayurl.mp3', now(), '$topic', '')";

if (!mysql_query($query)) {
  // Handle error here
  // e.g.
  // echo "Oh no! The query failed! Error: ".mysql_error();
}

这可能会解决问题,并防止 SQL 注入攻击。

于 2011-11-28T17:29:35.853 回答
1

你错过了“悲伤”的价值。您可以使用mysql_error().

于 2011-11-28T17:30:35.600 回答
0

<form action="test.php" type="post">
<input type="text" name="topic" />
</form>

<?php
$input = $_POST['topic'];
echo $input;
mysql_query("INSERT INTO balbal VALUES ('".$input."')") or die (mysql_error());
?>

为你工作?

于 2011-11-28T18:22:13.580 回答