2014-12-19 6 views
-1

Старый код обновил его ниже. Чтобы люди обновлялись, нажимает на эту тему.php sql query insert - не работает

У меня есть эта функция, и она не сохранит данные в базе данных. class connection { public $ host = "localhost"; public $ user = "root"; public $ password = ""; public $ db = "login"; public $ dbc;

 function __construct() { 
     $con = mysqli_connect($this->host, $this->user, $this->password, $this->db); 

     if(mysqli_errno($con)){ 
      echo"sum error"; 
     }else{ 
       $this->dbc = $con; 
        echo"connected "; 
       } 
       } 
      } 



    <?php 
    session_start(); 
    include_once("views/header.php"); 
    include_once("classes/functions.php"); 

    $userid = $_SESSION['userid']; 
    $body = substr($_POST['body'],0,140); 

    add_post($userid,$body); 
    $_SESSION['message'] = "Your post has been added!"; 

    header("Location:information.php"); 



function add_post($userid,$body){ 
var_dump($userid); 
    $sql = "INSERT INTO posts (user_id, body, stamp) 
      values ($userid, '". mysqli_real_escape_string($con,$body). "',time())"; 

       die(); 
       if (mysqli_query($con, $sql)) { 
        echo "New record created successfully"; 

       } else { 
        echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
       } 
       mysqli_close($con); 

это новейшая часть кода получать эту ошибку: Примечание: Undefined переменной: жулик в C: \ XAMPP \ HTDOCS \ веб-страница \ Классы \ functions.php на линии 34

   function add_post($userid,$body){ 
       $sql = "INSERT INTO posts (user_id, body, stamp) VALUES ($userid, $body, NOW())"; 
       $con; 
       /* create a prepared statement */ 
       if ($stmt = $con->prepare($sql)) { 

        /* bind parameters for markers */ 
        $stmt->bind_param("iss", $userid, $body, time()); 

        /* execute query */ 
        $stmt->execute(); 

        if($id = $con->insert_id){ 
         printf("New record created successfully, ID = %d\n", $id); 
        }else{ 
         echo 'Did not insert any row'; 
        } 

        /* close statement */ 
        $stmt->close(); 
       }else{ 
        echo "Error: " . $sql . "<br>" . mysqli_error($con); 
        } 
       } 
+1

'mysqli_real_escape_string ($ body)' требуется, чтобы DB-соединение передавалось как первый параметр. 'или die (mysqli_error ($ con))' to 'mysqli_query()' и этот 'mysqli_error ($ conn)'? Каково ваше соединение с БД, '$ con' или' $ conn'? –

+0

Я обновил код с помощью соединения класса –

+0

То же самое касается моего первоначального комментария. –

ответ

2

Все получилось хорошо. Пришлось редактировать большую часть кода, чтобы он работал.

<?php 
    session_start(); 
    include_once ("views/header.php"); 
    include_once ("classes/functions.php"); 

    $db = new connection();//instance of connection class 
    $userid = $_SESSION['userid']; 
    $body = substr($_POST['body'], 0, 140); 
    $con = $db->get_connnetion(); 
    $insertCount = add_post($con, $userid, $body); 
    if($insertCount > 0){ 
     $_SESSION['message'] = "Your post has been added!"; 
     header("Location:information.php"); 
    }else{ 
     echo "Your post has not been added!"; 
    } 
    ?> 
+0

Спасибо за помощь, но я не использую PDO –

+0

@PatrikChristoffersson это код mysqli, [вы можете использовать подготовленный с mysqli а также] (http://php.net/manual/en/mysqli.prepare.php) – meda

+0

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