2015-01-18 3 views
0

Вот мой HTML форма для добавления данных в таблицу:

<div class="TTWForm-container"> 
<div id="form-title" class="form-title field"><h2>ახალი სტატია</h2></div> 
<form enctype="multipart/form-data" action="index.php?link=addart" class="TTWForm ui-sortable-disabled" method="post"> 
<div id="field2-container" class="field f_100 ui-resizable-disabled ui-state-disabled"> 
<label for="title">სათაური</label> 
<input name="title" id="title" required="required" type="text"> 
</div> 
<div id="field10-container" class="field f_100 ui-resizable-disabled ui-state-disabled"> 
<label for="post"> 
სტატია 
</label> 
<textarea rows="15" cols="40" name="post" id="post" required="required"></textarea> 
</div> 
<div id="form-submit" class="field f_100 clearfix submit"> 
<input value="დამატება" type="submit" id="submit"> 
</div> 
</form> 
</div> 

обработка

if (isset($_POST['title'])) {$title = $_POST['title'];} 
if (isset($_POST['post'])) {$post = $_POST['post'];} 

<?php 
if (isset($title) && isset($post)) 
{ 
/*can add post */ 
$insert = "INSERT INTO article ('title','post') VALUES ('$title','$post')"; 
$result = mysqli_query($connect,$insert); 

if ($result == 'true') {echo "<p>post is added.</p>";} 
else {echo "<p>post is not added.</p>";} 
} 
else 
{ 
echo "<p>Fill all fields.</p>"; 
} 
?> 

После обработки он всегда говорит, что пост не добавляется. Проверка базы данных и ее прав. Не могу найти ошибку. Пожалуйста помоги. Благодарю.

+0

Просматривая ваш ярлык, мне интересно, какой тип кодировки вы пытаетесь сохранить в своей базе данных. вы использовали правильную кодировку для своей таблицы mysql? – cari

+0

Проверка журналов ошибок на вашем сервере может быть хорошим началом ... –

+0

Я использую UTF8_general_ci для хранения грузинских символов. Сохраненные данные - грузины. – David

ответ

0

так просто изменить:

else 
{ 
echo "<p>post is not added</p>"; 
} 

к:

else 
{ 
echo "<p>MySQL error:".mysqli_error($connect)."</p>"; 
} 
+0

Запишите ошибки, но не печатайте их. Это, скорее всего, превратит его в производственный код и может выявить конфиденциальную внутреннюю информацию, предназначенную только для разработчика. – Gumbo

+0

Я думаю, что @David спрашивал о том, как отладить его код и найти, что не так. а не о том, как создать хорошее приложение. – Alex

+1

Почему бы не обойтись? – Gumbo

1

Boolean Сравнение

Во-первых, проверьте сравнение. mysqli_query возвращает boolean true или false, а не строку «true» или «false». Вместо того, чтобы:

if ($result == 'true') 

использование

if ($result == true) 

или даже:

if ($result) 

Отладка запросов

Далее проверьте сам запрос на наличие ошибок. Как Фред noted, вы должны пометить имена столбцов с обратно клещами вместо одинарных кавычек:

INSERT INTO article (`title`,`post`) 

Рассмотрит протоколирование выхода mysqli_error, или попробовать вторя запрос и запустить его вручную с базой данных. Вы можете обнаружить, что в запросе есть скрытый синтаксис или ошибка данных, которая не очевидна в коде.

Опубликовано Значения

Далее, проверьте значения, что вы выборку из $_POST. Есть $_POST['post'] комплект? Имеет ли это полезное значение?

Database Connection

Наконец, проверьте саму подключение к базе данных. Вы действительно связаны? У вас есть отладка регистрации или вывода вокруг попытки подключения?

+3

Плюс, OP обрабатывает свои столбцы как значения '('title', 'post')' –

+1

Я лично считаю, что OP принял неверный ответ. Это охватывает почти все. –

2

Вот подготовленное заявление для вас.

$link = new MySQLi('localhost','username','password','database'); 

if(isset($_POST['title'],$_POST['post'])&& $_POST['title'] !="" && $_POST['post'] !=""){ 
     $title = $_POST['title']; 
     $post = $_POST['post']; 
     if($query = $link->prepare('INSERT INTO article (title,post) VALUES(?,?)')){ 
      $query->bind_param('ss',$title,$post); 
      $query->execute(); 
      $query->close(); 
      echo 'Success!'; 
     }else{ 
      echo 'Failure!'; 
     } 
    }else{ 
     echo 'You missed a field!'; 
} 
+0

Благородный, но вы должны были исправить ошибки в другом ответе, который вы дали, и изменить его с помощью этого. –

+0

Я уже работал над подготовленным заявлением для мальчика. Казалось бессмысленным. @ Fred-ii- –

+0

Я на самом деле не поймал эту ошибку раньше, поэтому хорошо смотрю на это. @ Fred-ii- –

Смежные вопросы