MySQLi Statement Inside Class - PullRequest
       2

MySQLi Statement Inside Class

0 голосов
/ 11 мая 2018

Я прочитал несколько потоков здесь в stackoverflow о операторах pdo внутри классов, но я не могу найти подходящий для моего случая.

У меня есть следующее:

<?php
class Tracking
{
  public function trackVisit($conversion){

    $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
    if ($db->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    } 
    $ipaddress = $_SERVER['REMOTE_ADDR']; 
    echo $ipaddress;
    $page = "{$_SERVER['HTTP_HOST']}";  
    echo $page;
    if(isset($_SERVER['HTTP_REFERER'])){
      $referrer = $_SERVER['HTTP_REFERER']; 
    }else{
      $referrer="none";
    }
    echo $referrer;
    $datetime = mktime(); 

    echo $datetime;
    $useragent = $_SERVER['HTTP_USER_AGENT']; 
    echo $useragent;
    $convers = $conversion;
    echo $convers;

    $stmt = $db->prepare("SELECT IP FROM analytics WHERE IP = ?");
    $stmt->bind_param("s", $ipaddress);
    $stmt->execute();
    $stmt -> bind_result($theip);
    while($stmt->fetch()) {
      $theip2 = $theip;
    }
    $result = $stmt->num_rows;
    echo $result;
    $stmt -> close();
    //check if ip address is already on db
    if($result == "1") {
      echo "ya existe la ip";
    }else{
      echo "no existe";

      $stmt = $db->prepare("INSERT INTO analytics(IP, PAGE, REFERRER, USER_AGENT, DATE, CONVERTED) VALUES(?, ?, ?, ?, ?, ?)"); //Fetching all the records with input credentials
      var_dump($stmt);
      $stmt->bind_param("sssssi", $ipaddress, $page, $referrer, $useragent, $datetime, $convers); //Where s indicates string type. You can use i-integer, d-double
      $stmt->execute();
      $result = $stmt->affected_rows;
      echo $result;
      $stmt -> close();

    }

    $db -> close(); 

  }
}
?>

Однако он не работает, поскольку он ничего не добавляет в базу данных и не возвращает никаких ошибок.

Есть идеи, что случилось?

Спасибо!

1 Ответ

0 голосов
/ 11 мая 2018

Добавлен следующий код

if(!$stmt->execute()) {
    echo "Error: " . mysqli_error($db);
}else{
    echo "Success";
}

, и он показал, что была проблема с одним полем базы данных, оно было слишком коротким для информации, которую я вставлял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...