Хорошо, так что это довольно просто, но это заставляет меня гайки
<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 часть
я просто не могу найти проблему, я получаю ошибку "что-то не так", независимо от того, что я делаю.
Все еще нужна помощь здесь.
У меня есть небольшой скрипт, который успешно работает в течение многих лет. 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);
}
Это дает список ошибок при сбое и список запросов при успехе. Запросы выполняются, но НЕ вставляются в БД.
Я проверил таблицы и не нашел пустых записей или нечетных уникальных настроек столбцов.
Есть идеи?
something went wrong
с настоящей ошибкой. php.net/manual/en/mysqli.error.php Вы также открыты для SQL-инъекций.$_SESSION
? Во-вторых, имейте в виду, что ваш код уязвим для внедрения SQL . Вы должны использовать подготовленные заявления, чтобы предотвратить это. Также убедитесь, что у пользователя вашей базы данных есть только необходимые привилегии . Вы можете обратиться к этому сообщению для получения дополнительной информации о том, как предотвратить внедрение SQL в PHP.