2015-01-03 3 views
1

Моя инструкция mysql insert проходит, когда я вручную вставляю ее, однако форма не будет публиковать. Любая помощь приветствуется.php mysql insert form post issue

Форма

<form method="post" action=""> 
    <h4>Title</h4> 
    <input type="text" id="post_title" /> 
    <h4>Location</h4> 
    <input type="text" id="post_location" /> 
    <h4>My Tale</h4> 
    <textarea id="post_content" ></textarea> 
    <input type="submit" value="Share"/><br /> 
</form> 

Форма Процессор

<pre> 
if (isset($_GET['success']) === true) { 
    echo 'Your journal entry has been added'; 
} else { 
    if (empty($_POST) === false && empty($errors) === true) { 
     $post_data = array(
     'post_title' => $_POST['post_title'], 
     'post_location' => $_POST['post_location'], 
     'post_content' => $_POST['post_content'] 
    ); 
    add_post($user_id, $post_data); 
    header('Location: settings.php?success'); 
    exit(); 
} else if (empty($errors) === false) { 
    echo output_errors($errors); 
} 
?> 
</pre> 

Функция, которая обрабатывает процесс пост

<pre> 
function add_post($blog_author, $post_data) { 
    $post = array(); 
    array_walk($post_data, 'array_sanitize'); 
    foreach($post_data as $field=>$data) { 
     $post[] = '`' . $field . '` = \'' . $data . '\''; 
    } 
    mysql_query("INSERT INTO user_blog (`post_author`,`post_title`,`post_location`,`post_content`) VALUES ('$blog_author','post_title','post_location','post_content')"); 
} 
</pre> 

Там нет ошибок, которые просто проверять наличие пустых полей формы. Кажется, что проблема между постом и функцией, но я не могу решить проблему.

+1

** Danger **: Вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http: // php.net/manual/en/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

ответ

0

add_post() В $post подготовлен, но не используется в конечном вызове mysql_query.

Вы готовите $post, который будет использоваться в заявлении INSERT INTO user_blog SET, но вы используете INSERT INTO user_blog() VALUES() для окончательного звонка.

Среди значений будет вставлен только `$ blog_author, остальные - строковые литералы.

0

Нет атрибут имени в текстовом поле, таким образом, он не будет получать содержание