У меня есть база данных с именем 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"] ?>
У вас нет заполнителей поэтому ничего не 'bind' –
Ваш вопрос [** intval() **] (http://php.net/manual/en/function.intval.php) функция, вы использовали с '$ _GET ['cid']' по какой-то причине он возвращает 1. Причина в том, что '$ _GET ['cid']' является массивом. Почему, я не знаю! – SaidbakR