MySQL — моя страница PHP не сохраняет данные

Я новичок в программировании на PHP и пытаюсь создать страницу PHP с полем для ввода текста, например, хранить эту информацию и демонстрировать ее. Идея заключается в том, что пользователь собирается написать текст в поле, и при нажатии «Отправить» MySQL сохранит информацию в таблице, а команда «atualizaPagina ()» покажет добавленную информацию.

<!DOCTYPE html>
<?php

require_once("enviar.php");

if(!empty($_POST)){
gravaTopico($_POST["mensagem"]);
}
?>
<html>
<head>
<title>Teste em php</title>
</head>
<body>
<?php

atualizaPagina();
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<textarea rows="10" cols="50" name="mensagem"></textarea>
<input type="submit" value="Enviar" />
</form>
</body>
</html>

И файл enviar.php находится здесь

<?php

function gravaTopico($values){

mysql_connect("localhost", "root", "Alabra%$") or die(mysql_error());

mysql_select_db("ifscjr") or die(mysql_error());

$strSQL = "INSERT INTO topicos(comentarios) VALUES($values)";

mysql_query($strSQL) or die (mysql_error());

mysql_close();
}

function atualizaPagina(){

mysql_connect("localhost", "root", "Alabra%$") or die(mysql_error());

mysql_select_db("ifscjr") or die(mysql_error());

$strSQL = "SELECT * FROM topicos";

$rs = mysql_query($strSQL);

while($row = mysql_fetch_array($rs)){
echo $row['comentarios'] . "<br />";
}

mysql_close();
}

?>

0

Решение

Попробуйте изменить это:

$strSQL = "INSERT INTO topicos(comentarios) VALUES ('$values')";
1

Другие решения

MuthaFury прав.
Но вам также нужно проверить не только то, что $ _POST ins не пусто, но и проверить, что $ _POST [«mensagem»] существует (! Empty ($ _ POST) && Исеть ($ _ POST [ «Mensagem»])).
И вам нужно экранировать входную строку из кавычек, используя mysql_real_escape_string, потому что если ваш $ _POST [«mensagem»] будет содержать кавычку (‘), ваш sql будет нарушен.
Пример для вашего кода:

$values = mysql_real_escape_string($values);
$strSQL = "INSERT INTO topicos(comentarios) VALUES('$values')";
0

По вопросам рекламы [email protected]