2013-06-15 2 views
0

Эта проблема у меня была в течение нескольких дней, и я не могу понять, где проблема. Я смотрел на функции по-разному, даже просматривая сайт php, но я не могу решить эту проблему. Это код, где у меня возникли проблемы:php не вставляет в mysql

$sql = mysqli_query($db_connect, "INSERT INTO forum_post(post_author, post_author_id, date_time, type, section_title, section_id, thread_title, post_body) VALUES($log_username, $log_id, now(), 'a', '$forum_section_title', '$forum_section_id', '$post_title', '$post_body')"); 
    $this_id = mysqli_insert_id($db_connect); 
    header("location: ../view_thread.php?id=$this_id"); 

отредактированный ...

Так что я могу показать, как я обработал обработку (а так я могу увидеть сообщение об ошибке):

$sql = mysqli_query($db_connect, "INSERT INTO forum_post(post_author, post_author_id, date_time, type, section_title, section_id, thread_title, post_body) VALUES('$log_username', '$log_id', now(), 'a', '$forum_section_title', '$forum_section_id', '$post_title', '$post_body')"); 
    if(mysqli_error($db_connect)) { 
     $message = mysqli_error($db_connect); 
     header("location: ../message.php?msg=$message");  
    } 
    $this_id = mysqli_insert_id($db_connect); 
    header("location: ../view_thread.php?id=$this_id"); 
    exit(); 
+0

Что вы пробовали до сих пор? Использование 'mysqli_error ($ db_connect);' и комментирование перенаправления кажутся первыми вещами. – jeroen

+0

всегда использует '$ mysqli-> ошибку' для отладки, так как это, вероятно, привело бы вас к ошибке. [link] http://www.php.net/manual/en/mysqli.error.php [link] – amigura

+0

Теперь я использую mysqli_error, позвольте мне проверить, могу ли я это понять –

ответ

0

Я буду рекомендовать использовать PDO, потому что это безопаснее и прямолинейно. и потому, что t просто не позволит вам делать ошибки и иметь проблемы.

Вот ваш код в PDO. Проверьте это:

try { 
    // Prepare our connection string 
    $con = new PDO("mysql:host=".HOST.";dbname=".DBNAME, USER, PASS); 
} 
catch(PDOException $e) { 
    // Connection error jumps here 
    echo $e->getMessage(); 
} 
// Prepare our Insert Query 
$query = $con->prepare("INSERT INTO forum_post(post_author, post_author_id, date_time, type, section_title, section_id, thread_title, post_body) VALUES(:post_author, :post_author_id, :date_time, :type, :section_title, :section_id, :thread_title, :post_body)"); 
// Get our data aligned in an array. 
$data = array('post_author' => $log_username, 'post_author_id' => $log_id, 'date_time' => now(), 'type' => 'a', 'section_title' => $forum_section_title, 'section_id' => $forum_section_id, 'thread_title' => $post_title, 'post_body' => $post_body); 
try { 
    // Try to execute our Insert Query with the given Data 
    $query->execute($data); 
} 
catch(PDOException $e) { 
    // Insert error jumps here 
    echo $e->getMessage(); 
} 
$this_id = $con->lastInsertId(); 
header("location: ../view_thread.php?id=$this_id"); 

Обязательно заменить свой HOST, базы данных, пользователя и Проходят в заполнителей, упомянутых в коде ...

+0

У меня все еще есть некоторые проблемы с этим кодом ... это так странно .. –

0

Я не знаю, как вы использовали mysqli_error($db_connect);, потому что вы должны получить сообщение об ошибке если сделаете.

Одна проблема заключается в том, что вы не процитировать ваши строковые значения:

$sql = mysqli_query($db_connect, "INSERT INTO forum_post(post_author, post_author_id, date_time, type, section_title, section_id, thread_title, post_body) 
     VALUES($log_username, $log_id, now(), 'a', '$forum_section_title', '$forum_section_id', '$post_title', '$post_body')"); 
//    ^^^^^^^^^^^^^ here  ^^^^^ and here 
//    (assuming $log_id is an integer...) 

Но я согласен с @MiroMarkarian, что вы должны использовать подготовленные заявления (может быть в MySQLi, а).

+0

Вы делаете хороший момент, я забыл об этом и по какой-то причине mysqli_error() не сделал поймать его ... Я пытаюсь понять это сейчас –

+0

Вы были правы в $ log_id и $ log_username. Я добавил «', но этого недостаточно, и я даже добавил« или умереть »(mysqli_error ($ db_connect)), в конце концов, но до сих пор не дает мне никаких ошибок ... –

+0

@EltonRodriguez Не перенаправлять, пока вы отладки. – jeroen

0

Убедитесь, что ваша установка php установлена ​​для сообщения об ошибках. Затем умрите при безуспешном выполнении запроса MySQL и проверьте полученную ошибку.

Чтобы включить отчеты об ошибках, поместите следующую строку в верхней части файла PHP:

<?php 
error_reporting(E_ALL^E_NOTICE); 
Смежные вопросы