2016-08-10 2 views
1

У меня есть база данных с именем tbl_stats, которая содержит столбец (UUID) и список идентификаторов пользователей.php select row из базы данных

Im пытается создать сценарий, где http://domain.com/index.php?cid=874365 отображает страницу с только значениями из этой строки пользователя.

Мой текущий код подключается к базе данных, но всегда отображает информацию из верхней строки, независимо от того, что такое? Cid =.

Мой текущий код:

<?php 
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE); 
    ob_start(); 
    session_start(); 

    define('DB_DRIVER', 'mysql'); 
    define('DB_SERVER', 'localhost'); 
    define('DB_SERVER_USERNAME', '[REDACTED]'); 
    define('DB_SERVER_PASSWORD', '[REDACTED]'); 
    define('DB_DATABASE', '[REDACTED]'); 


    $dboptions = array(
        PDO::ATTR_PERSISTENT => FALSE, 
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
       ); 

    try { 
     $DB = new PDO(DB_DRIVER.':host='.DB_SERVER.';dbname='.DB_DATABASE, DB_SERVER_USERNAME, DB_SERVER_PASSWORD , $dboptions); 
    } catch (Exception $ex) { 
     echo $ex->getMessage(); 
     die; 
    } 

    //get error/success messages 
    if ($_SESSION["errorType"] != "" && $_SESSION["errorMsg"] != "") { 
     $ERROR_TYPE = $_SESSION["errorType"]; 
     $ERROR_MSG = $_SESSION["errorMsg"]; 
     $_SESSION["errorType"] = ""; 
     $_SESSION["errorMsg"] = ""; 
    } 

     try { 
      $cid = intval($_GET['cid']); 
      $sql = "SELECT * FROM tbl_stats WHERE 1 AND UUID=$cid"; 
      $stmt = $DB->prepare($sql); 
      $stmt->bindValue(":cid", $cid); 

      $stmt->execute(); 
      $results = $stmt->fetchAll(); 
     } catch (Exception $ex) { 
      echo $ex->getMessage(); 
     } 

     ?> 

А потом цитировать информацию на странице, я использую следующее:

<?php echo $results[0]["username"] ?> 
+0

У вас нет заполнителей поэтому ничего не 'bind' –

+0

Ваш вопрос [** intval() **] (http://php.net/manual/en/function.intval.php) функция, вы использовали с '$ _GET ['cid']' по какой-то причине он возвращает 1. Причина в том, что '$ _GET ['cid']' является массивом. Почему, я не знаю! – SaidbakR

ответ

1

Большое спасибо за помощь ребятам!

Удалось устранить это благодаря вам!

try { 
    $cid = $_GET['cid']; 
    $sql = "SELECT * FROM tbl_stats WHERE UUID=:cid"; 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":cid", $cid); 

    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
} catch (Exception $ex) { 
    echo $ex->getMessage(); 
} 
+0

Вы были на 90%. Вот и все. – tadman

0

Вам необходимо добавить заполнитель в операторе SQL

 $sql = "SELECT * FROM tbl_stats WHERE UUID=:cid"; 
+0

Спасибо за ваш ответ - я изменил эту строку, но теперь данные не отображаются. – rohanmcdermott

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