переменная php объявлена, но не будет вставлена ​​в базу данных - PullRequest
0 голосов
/ 28 ноября 2011

В одном из моих скриптов php $ _POST правильно объявляется в переменную. Когда я отображаю переменную, она отображается правильно, однако при проверке базы данных она вставляется неправильно. Кажется пустым Поэтому я предполагаю, что это не проблема с переменной, потому что она вызывается правильно. Я не знаю, в чем проблема, когда он вставляет.

При необходимости это приложение twilio, поэтому приложение извлекает URL-адрес записи из приложения twilio, и я передаю значение из формы, в которой вы записываете. Я просто констатирую это для тех, кто знаком с Twilio Apps.

$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 на = «что угодно», она будет правильно публиковать «что угодно» в базе данных, но как только я изменю ее на $ _POST ['topic'], она снова начнет публиковать пустое значение. Но если я буду отображать $ topic в любом месте, он отправит правильное значение $ _POST

EDIT # 2, хорошо, новое обновление, поэтому я изменил объявленную переменную на $ sayid = "20"; $ hearid = "01"; $ topic = $ _POST ['topic']; $ sayurl = $ _REQUEST ['RecordingUrl']; вместо $ sayid = "20"; $ hearid = "01"; $ sayurl = $ _REQUEST ['RecordingUrl']; $ topic = $ _POST ['topic']; и теперь я получаю вывод сценария php СОЗДАНИЕ 2 НОВЫХ ЗАПИСЕЙ, у одного из них есть все, кроме $ topic, а у другого - только $ topic, поэтому они, очевидно, публикуют все поля, но в двух разных строки! лол вау что, черт возьми, происходит

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Использование:

$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-инъекций.

1 голос
/ 28 ноября 2011

Вам не хватает значения "грустно". Вы можете увидеть, была ли ошибка при выполнении предыдущего оператора SQL с использованием mysql_error().

0 голосов
/ 28 ноября 2011

делает

<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());
?>

работаешь на тебя?

...