2017-02-14 3 views
1

Я пытаюсь заставить пользователя вставить значение определенной строки в таблицу db. Однако я получаю сообщение об ошибке: Вызов функции член регистра()Вставка значения в базу данных с помощью подготовленного оператора

Вот является PHP и HTML-код, который я использую, чтобы обновить таблицу

<?php 
ini_set("log_errors", 1); 
ini_set("error_log", "/tmp/php-error.log"); 
session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 

if(!$user_home->is_logged_in()) 
{ 
    $user_home->redirect('index.php'); 
} 

$stmt = $user_home->runQuery("SELECT * FROM tbl_client_info WHERE UCODE=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

    if($stmt->rowCount() == 1) 
    { 
     if(isset($_POST['submit'])) 
     { 
      $purchasedata = $_POST['purchasedata']; 
      $cpurchasedata = $_POST['cpurchasedata']; 


      if($cpurchasedata!==$purchasedata) 
      { 
       $msg = "<div class='alert alert-block'> 
         <button class='close' data-dismiss='alert'>&times;</button> 
         <strong>Sorry!</strong> Input Does Not Match. Make sure the details match. 
         </div>"; 
      } 
      else 
      { 

       $stmt = $user-> register("UPDATE tbl_client_info SET purchasedata=? WHERE UCODE=:uid"); 
       $stmt->execute(array(":purchasedata"=>$purchasedata,":uid"=>$rows['UCODE'])); 

       // 

       $msg = "<div class='alert alert-success'> 
         <button class='close' data-dismiss='alert'>&times;</button> 
         Okay, we have added data to your account. 
         </div>"; 
      } 
     } 
    } 
    else 
    { 
     $msg = "<div class='alert alert-success'> 
       <button class='close' data-dismiss='alert'>&times;</button> 
       No Sorry That Did Not Work, Try again 
       </div>"; 

    } 

?> 

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Forgot Password</title> 
    <!-- Bootstrap --> 
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"> 
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet" media="screen"> 
    <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen"> 
    <link href="assets/styles.css" rel="stylesheet" media="screen"> 

    <link href="css/bootstrap.min.css" rel="stylesheet"> 

    <link href="fonts/css/font-awesome.min.css" rel="stylesheet"> 
    <link href="css/animate.min.css" rel="stylesheet"> 
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> 
    <!--[if lt IE 9]> 
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
    <!-- Custom styling plus plugins --> 
    <link href="css/custom.css" rel="stylesheet"> 
    <link href="css/icheck/flat/green.css" rel="stylesheet"> 
<script src="js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script> 

<!-- Sweet Alert --> 
    <script src="dist/sweetalert-dev.js"></script> 
    <link rel="stylesheet" href="dist/sweetalert.css"> 
    <!--.......................--> 

    </head> 



<body style="background:#f3f3f3;"> 

    <div id="wrapper"> 
     <div id="login_content" class="animate form"> 
     <section class="login_content"> 
      <form method="post"> 
      <h1>Purchase Data</h1> 

      <div class='alert alert-success'> 
      <strong>Hello </strong><?php echo $row['firstname'] ?>! //add more text here 
     </div> 

     <?php 
     if(isset($msg)) 
     { 
      echo $msg; 
     } 
     ?> 
     <input type="text" class="input-block-level" placeholder="500mb" name="purchasedata" required /> 
     <input type="text" class="input-block-level" placeholder="Retype the bundle" name="cpurchasedata" required /> 
     <hr /> 
     <button class="btn btn-large btn-primary" type="submit" name="btn-update-data">Add data to my account</button> 
      <div class="clearfix"></div> 
      <div class="separator"> 

       <p class="change_link">All Done ? 
       <a href="index.php" class="to_register"> Go Home </a> 

мой class.user.php выглядит следующим образом :

<?php 

require_once 'dbconfig.php'; 

class USER 
{ 

    private $conn; 

    public function __construct() 
    { 
     $database = new Database(); 
     $db = $database->dbConnection(); 
     $this->conn = $db; 
    } 

    public function runQuery($sql) 
    { 
     $stmt = $this->conn->prepare($sql); 
     return $stmt; 
    } 

    public function lasdID() 
    { 
     $stmt = $this->conn->lastInsertId(); 
     return $stmt; 
    } 

    public function register($uname,$email,$upass,$code,$purchasedata) 
    { 
     try 
     {       
      $password = md5($upass); 
      $stmt = $this->conn->prepare("INSERT INTO tbl_client_info(User_Name,billingemail,password,purchasedata,tokenCode) 
                 VALUES(:User_Name, :billingemail, :password, :purchasedata, :active_code)"); 
      $stmt->bindparam(":user_name",$uname); 
      $stmt->bindparam(":user_mail",$email); 
      $stmt->bindparam(":user_pass",$password); 
      $stmt->bindparam(":active_code",$code); 
      $stmt->bindparam(":purchasedata",$purchasedata); 
      $stmt->execute(); 
      return $stmt; 
     } 

Что я делаю неправильно? Я искал ошибку, но я не вижу, где я ошибся. Любая помощь или ссылки на помощь будут оценены.

+0

Просьба сообщить об ошибке: –

+0

PHP Примечание: Неопределенная переменная: пользователь в /var/www/html/forgetpass/data.php в строке 35 [14-фев-2017 08:49:29] PHP Неустранимая ошибка: Позвоните в регистр функций-членов() для не-объекта в /var/www/html/forgetpass/data.php в строке 35 –

+0

У вас есть '$ user-> register (... etc', но если он не будет' $ user_home-> register (... и т. д. – Rasclatt

ответ

0

$user должно быть $user_home. Вы использовали неправильный вариант при вызове функции register.

+0

в порядке, это устраняет ошибку, но ничего не обновляется, нет успеха msg echo или что-то еще. Нет новых ошибок, хотя –

+0

@sean, так почему вы согласились с ответом? сделанные ниже, очевидны, и вы сделали ту же ошибку в своем новом вопросе. http://stackoverflow.com/q/42226244/1415724 –

+0

@ Fred-ii- Я не собираюсь жить с этим, я тестирую, чтобы увидеть, если мы может делать то, что мы хотим сделать. он ответил выше, решив проблему с этой конкретной ошибкой. Можете ли вы показать мне, что я делаю неправильно здесь? Или указать мне в правильном направлении? –

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