0

Есть скрипт, не получается отправить имя и текст сообщения в базу данных. Не могу понять, почему так. Помогите пожалуйста. если отправлять только текст, без имение автора, то всё работает. Файл upload_news.php

<?php
require_once("system/db_connect.php");

$com = $_POST['comment'];
$autor = $_POST['autor_p'];

$result2 = mysql_query("INSERT INTO `post` ('autor_post', 'text_post') VALUES('$autor','$com')");


if ($result2== 'true') 
{echo "Новость успешно была загружена.";}
else{echo "Не удалось загрузить новость, обратитесь к администратору.";}

?>

index.php:

<html lang="en">
        <head>
            <title>Document</title>
        </head>
        <body>
        <form action="upload_news.php" method="post">
        <p>Ваше имя:</p>
        <input type="text" name="autor_p" value="Anonymous">
        <p>Текст новости:</p>
        <textarea name="comment" cols="40" rows="3"></textarea>
        <br>
        <input type="submit" value="Добавить новость">
        </form>
        </body>
        </html>
  • Вы вместо проверки истинности переменной $result2, сравниваете ее со строкой. Попробуйте if ($result2). И проверьте БД, возможно запись вставляется в таблицу, а переменная $result2 - истина, но сообщение об успешной загрузке не выводится, т.к. True == 'true' - возвращает False. – Артем Поликарпов Apr 12 '18 at 09:38
  • Нет, текст не вставляется в таблицу. – Саша Горин Apr 12 '18 at 09:41
  • @СашаГорин ну раз Вы всё равно решили проблему - теперь время почитать про безопасность и как перейти на PDO – Александр Белинский Apr 13 '18 at 08:56
  • В том что я делал, мне не нужна была безопасность, так как для себя для примера. Следующий проект буду делать безопасным. – Саша Горин Apr 21 '18 at 16:07

3 Answers3

1

По думал более тщательно, сейчас всё работает. Спасибо всем кто помогал)).

$result2 = mysql_query("INSERT INTO `name_table`.`post` (`autor_post`, `text_post`) VALUES ('$autor', '$com');");
0

Сделал через костыль, с одинарными и двойными кавычками

mysqli_query("INSERT INTO post(autor_post, text_post) VALUES ('".$autor."', '".$comm."')");
KrasPvP
  • 391
  • 5
  • 19
  • Исправил, не там поставил одинарные – KrasPvP Apr 12 '18 at 09:57
  • Так не отправляет, пишет не удалось отправить. – Саша Горин Apr 12 '18 at 10:05
  • Окей, переделал. Сейчас точно сработает, со своего проекта взял по примеру. – KrasPvP Apr 12 '18 at 10:08
  • Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in upload_news.php on line 7 – Саша Горин Apr 12 '18 at 10:13
  • Попытка номер 6. Исправил – KrasPvP Apr 12 '18 at 10:20
  • Используйте PDO prepare() и не будет таких проблем! http://php.net/manual/ru/pdo.prepared-statements.php – RaZik Apr 12 '18 at 10:22
  • Я пользуюсь denwer, mysqli не работает, выходит в ошибку. – Саша Горин Apr 12 '18 at 10:23
  • mysqli не работает? тогда замените старой версией - mysql – KrasPvP Apr 12 '18 at 10:24
  • Пришлось отъехать, попробую вечером, если не заработает, напишу, спасибо что пытаешься помочь)) – Саша Горин Apr 12 '18 at 10:26
  • 2
    Никогда не пишите такой код, он небезопасен, используйте подготовленные выражения, а лучше вышеупомянутый PDO. С хостинга, в котором не работает mysqli, нужно срочно эвакуироваться. – andreymal Apr 12 '18 at 10:44
0
$result2 = mysql_query("INSERT INTO `post` (autor_post, text_post) VALUES('$autor','$com')");

По моему надо просто убрать апострофы с имён полей.