#php #html #xhtml
#php #HTML #xhtml
Вопрос:
Предполагается, что этот скрипт получает содержимое текстовой области и отправляет его в mysql, но никто не может понять, почему?
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$error = '';
$like = mysql_real_escape_string($_POST['like_box']);
mysql_query("INSERT INTO likes (like) VALUES ($like)");
$id = mysql_query("SELECT id FROM likes WHERE like=$like");
header('Location:like.php?id='.$id.'');
}?>
<form method="post" action="post.php">
<textarea name="like_box" id="like_box" style="border-style: none; border-color: inherit; border-width: 0; width: 458px; height: 65px" class="style11120"></textarea>
<tr>
<td style="height: 53px">
<div class="style11116" style="width: 417px">
<input name="Submit" type="submit" value="submit" />
</form>
Комментарии:
1. Вы пробовали отладку в post.php файл, запись
echo $_POST['like_box']; die();
работает ли это там?2. В скрипте вы подключаетесь к базе данных и выбираете ее?
Ответ №1:
Наличие некоторого сообщения об ошибках сообщило бы вам, что вам нужно ‘вокруг $like
и вам нужно` вокруг like в разделе columns, поскольку like — это зарезервированное слово внутри вставки.
mysql_query("INSERT INTO likes (`like`) VALUES ('$like')") or trigger_error('Query Error: ' . mysql_error());
Должно сработать.
Также вам нужно будет вложить like в ` для выбора:
$id = mysql_query("SELECT id FROM likes WHERE `like`=$like") or trigger_error('Query Failed: ' . mysql_error());
Ответ №2:
Ваш первый SQL-запрос неверен. В SQL вы должны заключать строковые значения в кавычки:
mysql_query("INSERT INTO likes (`like`) VALUES ('$like')");
Остальная часть вашей PHP-части также не будет работать так, как вы хотите. $id будет результирующим набором, а не значением. Вам нужно будет извлечь строку следующим образом:
$result = mysql_query("SELECT id FROM likes WHERE `like`='$like'");
$row = mysql_fetch_assoc($result);
$id = $row['id'];
Или, что еще лучше, просто замените второй SQL-запрос вызовом mysql_insert_id:
$id = mysql_insert_id();
Еще больше возможностей для улучшения:
- Не забудьте вызвать
exit
после того, как вы выполнилиheader('Location: ...');
вызов, иначе вы можете получить неожиданные результаты, поскольку скрипт продолжит выполнение. - Добавьте некоторую обработку ошибок вашей вставки. По крайней мере, проверьте с помощью оператора if, что это удалось.