2016-02-04 3 views
1

Я пытаюсь вставить данные в базу данных mysql, но все происходит отлично, не возникает ошибка, но когда я просматриваю данные, чтобы они не были вставлены в базу данных здесь, мое кодирование любезно проверит это.Данные не вставляются в базу данных mysql в php

здесь мои HTML коды:

<html> <head> 

<title>Insert Latest News</title> 

</head> 

<body> 

<form action="insert_post.php" method="POST" enctype="multipart/form-data"> 

<table align="center" border="10" width="800"> 

<tr> <td align="center" colspan="5" bgcolor="yellow"><h1>Insert Latest News</h1></td> </tr> 

<tr> <td>Post Title</td> <td><input type="text" name="title" size="30" /></td> </tr> 

<tr> <td>Post Author</td> <td><input type="text" name="author" /></td> </tr> 

<tr> <td>Post Image</td> <td><input type="file" name="image" /></td> </tr> 

<tr> <td>Post Content</td> <td><textarea name="content" cols="50" rows="20"></textarea></td> </tr> 

<tr> <td colspan="5" align="center"><input type="submit" name="submit" value="Publish" /></td> </tr> </table> 

</form> </body> </html> 

Вот моя связь скрипт

$connect = mysql_connect("localhost","root",""); 
$con = mysql_select_db("express", $connect); 
if ($con){ 
    echo ""; 
} else { 
    echo "databse not connected"; 
} 

здесь мои PHP коды:

<?php require("connect.php"); 

if (isset($_POST['submit'])){ 

    $title = $_POST['title']; 
    $author = $_POST['author']; 
    $content = $_POST['content']; 
    $image_name = $_FILES['image']['name']; 
    $image_type = $_FILES['image']['type']; 
    $image_size = $_FILES['image']['size']; 
    $image_tmp = $_FILES['image']['tmp_name']; 
    $date = Date('y/m/d'); 

    if ($title=='' or $author=='' or $content=='' or $image_name==''){ 

     echo "<script>alert('Any feild is empty')</script>"; 
     exit(); 
    } 
    if ($image_type=='image/jpeg' or $image_type=='image/png' 
    or $image_type=='image/gif' or $image_type=='image/jpg'){ 

     echo ""; 
    } else { 
     echo "<script>alert('your image type is not allowed')</script>"; 
    } 
    if ($image_size<=1000000){ 
     move_uploaded_file ($image_tmp, "images/$image_name"); 
     exit(); 
    } else { 

     echo "<script>alert('Image is larger, not allowed by admin ')</script>"; 
    } 

    $query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values($title,$author, $content, $image_name, $date,)"; 

    if ($query){ 
     echo "<center><h1>Your News has Been Published</h1></center>"; 
    } 
} 
?> 
+0

экстра, 'есть в вашем файле' $ query' –

+1

'($ название, $ author, $ content, $ image_name, $ date,) 'не подходит вам по нескольким причинам. –

+0

Где ваш разъем db? –

ответ

2

Вы забыли выполнить запрос: $result = mysql_query($query);

И вы забыли установить соединение:

$connection = mysql_connect(DB_HOST, DB_USER , DB_PASS) 
or die("Could not connect to the database."); 
mysql_select_db(DB_NAME) or die ("Database could not be selected."); 

Я - кстати - использовать 1048576 вместо 1000000 в качестве максимального размера изображения.

+0

Я установил соединение db и добавлю их, выполнив следующие функции: require ("connect.php"); и в файле connect.php i закодирован: $ connect = mysql_connect ("localhost", "root", ""); $ con = mysql_select_db ("express", $ connect); if ($ con) { echo ""; } else { echo "databse not connected"; } –

+0

Хорошо. Но в любом случае вы забыли его выполнить с помощью mysql_query ($ query) 'или' mysqli_query ($ query) ' –

+0

@ J. Gower sidenote:' mysqli_query ($ query) 'MySQLi_ API требует, чтобы к нему было передано соединение db и как первый параметр. I.e .: 'mysqli_query ($ connection, $ query)'. Тем не менее, их API, используемый для связи, совершенно неизвестен. –

3

Вы код в основном ужасно:

1) Подверженность SQL injection attacks
2) Отсутствие проверки загрузки на всех
3) Просто предполагает успех на всех операциях

и главной проблемой, игнорируя остальные :

ошибка 4) Синтаксис из-за ваше отсутствие кавычек и дополнительных запятых в строке запроса ::

$query = "INSERT INTO news 
(news_title, news_author, news_content, news_image, news_date) 
values('$title','$author', '$content', '$image_name', '$date',)"; 
     ^------^-^-------^--^--------^--^-----------^--^-----^---missing 
                  ^---wrong 

Если вы сделали ANY вид защитного программирования, например. проверяя ошибки, вам сказали бы о ваших проблемах с синтаксисом sql ... Никогда EVER принять успех. Всегда принимайте неудачу, проверяйте неудачу и относитесь к успеху как к приятному удивлению.

3

($title,$author, $content, $image_name, $date,) не подходит по нескольким причинам.

Строковые литералы требуют, чтобы они были процитированы, и у вас есть конечная запятая.

('$title','$author', '$content', '$image_name', '$date')

Ссылка:

Вы также не запрашивая и API MySQL используется для подключения с неизвестно.

  • connect.php это ящик Пандоры .

Consult: http://php.net/manual/en/mysqlinfo.api.choosing.php

методы запросов для вас, чтобы читать дальше, при запросе к базе данных MySQL в PHP.

и убедитесь, что вы не смешивая их.

Consult: Can I mix MySQL APIs in PHP?

Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.

Также проверьте наличие ошибок по вашему запросу. Я не могу предоставить ссылку для него, так как я не знаю, с каким MySQL вы работаете для связи.

  • mysql_?
  • mysqli_?
  • PDO?
  • прочее?

  • Только вы это знаете.

Настоящий код действителен до SQL injection. Используйте prepared statements, или PDO с prepared statements.


Сноска:

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

Отчет об ошибках расскажет вам, есть ли что-то в этом роде.


Edit: и последняя попытка помочь.

Здесь я опишу соединение MySQLi_. Если это MySQL_ или PDO, вам нужно посмотреть руководства.

  • Я считаю, что я сделал достаточно, чтобы помочь вам решить эту проблему.

Sidenote: Я использовал $connection как переменную соединения. Только вы знаете, что используется в вашем файле connect.php.

$query = mysqli_query($connection, "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title','$author', '$content', '$image_name', '$date')"); 

if ($query){ 

    echo "<center><h1>Your News has Been Published</h1></center>"; 
} 

else{ 
    echo "Error: " . mysqli_error($connection); 
    } 

Дополнительные изменения:

Видя этот комментарий вы поместили:

"здесь мои коды файлов connect.php: $ = mysql_connect подключения (" локальный "" корень "," "); $ con = mysql_select_db (" express ", $ connect); if ($ con) {echo" ";} else {echo" databse not connected ";}"

Здесь необходимо проверить реальную ошибку, используя mysql_error().

Затем мое изменение должно быть изменено на mysql_query(), и если требуется подключение, это должен быть последний параметр.

Я предлагаю вам перейти на MySQLi или PDO API.

Эти ссылки приведены здесь в моем ответе.

Метод MySQL_.

$query = mysql_query("INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title','$author', '$content', '$image_name', '$date')"); 

if ($query){ 

    echo "<center><h1>Your News has Been Published</h1></center>"; 
} 

else{ 
    echo "Error: " . mysql_error(); 
    } 

Sidenote: Если требуется подключение, сделать if ($query, $connection)

Если это все еще не вы, то вы, скорее всего, нужно будет перейти на любой MySQLi_ или PDO.

  • Удачи.
+0

Но я пробовал одни и те же коды на своем другом ноутбуке, поэтому данные правильно вставляются в базу данных, я думаю, что любая проблема с моим wamp-сервером я удалил, а затем установил его много раз, но проблема такая же Я использую Windows 7 64 бит. –

+0

@ ZubairAli Я оставил вам комментарий по вашему вопросу и в своем ответе. Мы не знаем, с каким API MySQL вы используете для подключения или если вы успешно подключены в первую очередь. Как указано мной и другими, вы не запрашивали базу данных, и для этого необходимо было установить соединение. Это неизвестно. Вам нужно будет прочитать ссылки, которые я оставил в своем ответе, и оттуда. На самом деле я ничего не могу добавить к этому, извините. Проверьте ошибки, как я также сказал в своем ответе. –

+0

@ ZubairAli Я сделал дополнительное редактирование для своего ответа, чтобы попытаться помочь вам больше. Перезагрузите его и посмотрите под ** Edit: и последняя попытка помочь. ** - Это будет последняя попытка, извините. Я искренне желаю вам удачи в этом. * Cheers * –

1

Для некоторых, кто как и я нашел большую часть ответов не вылечить эту проблему, попробуйте

if (!mysqli_commit($link)) print("<p>Transaction commit failed</p>\n"); 

оказывается, что некоторое MySQL (или MariaDB) распределение может иметь автоматические фиксации выключено. ключ был в том, что, когда я вставлял свой запрос непосредственно в mysql, я обнаружил, что идентификатор увеличивался, а просто нет данных в таблице.

-1

Вы забыли поставить кавычки в значениях MySQL вставить

$query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values($title,$author, $content, $image_name, $date,)"; 

Вы должны поставить кавычки затем сохранить

$query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title', '$author', '$content', '$image_name', '$date',)"; 
+0

Можете ли вы отформатировать свой код? Ваш ответ не читается. – IanS

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