mysqli_query не работает INSERT INTO не работает

0

Хорошо, так что это довольно просто, но это заставляет меня гайки

<div class="heading"><h2>Make a post<h2></div>
            <form action="post.php" method="POST">
            <div class="head"><h3>Title</h3></div>
                <textarea name="title" rows="2" cols="45"></textarea>
            <div class="desc"><h3>Content</h3></div>
                <textarea name="description" rows="15" cols="45"></textarea><br>
            <input type="submit" value="Submit">
            <p id="error_p"><?php echo (!empty($_SESSION['post_message']))? $_SESSION['post_message']:""; ?></p>
            </form>

html часть

if(!empty($_POST['title']) && !empty($_POST['description']))
{


    $title=$_POST['title'];
    $description=$_POST['description'];
    $user_id=$_COOKIE['user_id'];


    $query="INSERT INTO posts (title,description,user_id)
    VALUES('".$title."','".$description."','".$user_id."');";
    $result=mysqli_query($conn,$query);
    if($result)
    {
        $_SESSION['post_message']="Posting succ";
        header('Location: profile.php');
    }
    else
    {
        $_SESSION['post_message']="something gone wrong";
        header('Location: profile.php');
    }

}

php часть

я просто не могу найти проблему, я получаю ошибку "что-то не так", независимо от того, что я делаю.

  • 2
    Не перенаправляйте, и замените something went wrong с настоящей ошибкой. php.net/manual/en/mysqli.error.php Вы также открыты для SQL-инъекций.
  • 1
    Во-первых, почему вы храните сообщение об ошибке в информации $_SESSION ? Во-вторых, имейте в виду, что ваш код уязвим для внедрения SQL . Вы должны использовать подготовленные заявления, чтобы предотвратить это. Также убедитесь, что у пользователя вашей базы данных есть только необходимые привилегии . Вы можете обратиться к этому сообщению для получения дополнительной информации о том, как предотвратить внедрение SQL в PHP.
Показать ещё 2 комментария
Теги:

1 ответ

0

Все еще нужна помощь здесь.

У меня есть небольшой скрипт, который успешно работает в течение многих лет. 1 месяц назад он прекратил запись в базу данных. Нет сообщений об ошибках, и когда я открываю свой файл отладки, где я храню все запросы, сделанные сценарием, они верны. Чтобы проверить это, я копирую запрос из файла отладки и вставляю его в окно SQL phpmyadmin, и он работает нормально. Нет ошибок

Вот часть вставки отредактированного скрипта

$query="INSERT into 
cmp_calls(id,status,caller_id_name,caller_name,caller_id_number,caller_number,";
$query.="call_start,call_end,call_duration,ring_duration,forwardno,cmpid";
$query.=",cmpname,inboundno,recorded,account_id,account_name)";
$query.="VALUES(\"$call->id\",\"$call->status\",\"$call->caller_name\",\"$call->caller_name\",";
 $query.="\"$call->caller_number\",\"$call->caller_number\",\"$call_start\",\"$call_end\",";
$query.="\"$call->call_duration\",\"$call->ring_duration\",\"$call->forwardno\",";
$query.="\"$call->cmpid\",\"$call->cmpname\",\"$call->inboundno\",\"$call->recorded\",\"$account_id\",\"$account_name\")";
//Insert into DB//
$link=mysqli_connect('localhost', 'xxxxxx','xxxxxxxx','xxxxxxx');
$result = mysqli_query($link,$query);
if (!$result) {
//write error log//
$ERR="Query: " . $query . "\n\nError: ("  . mysqli_error($link)."\n";
$fp=fopen('error_log.txt','a+');
fwrite($fp,'FAILED SQL \n'.$ERR);
fclose($fp);
}
//write query log
else {
$fp=fopen('query-log.txt','a+');
fwrite($fp,$query);
fclose($fp);
}

Это дает список ошибок при сбое и список запросов при успехе. Запросы выполняются, но НЕ вставляются в БД.

Я проверил таблицы и не нашел пустых записей или нечетных уникальных настроек столбцов.

Есть идеи?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню