我有一个名为tbl_stats的数据库,其中包含一列(UUID)和一个用户ID列表。
我正在尝试创建一个脚本,其中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 :(得分: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();
}
答案 1 :(得分:0)
您需要在SQL语句中添加占位符
$sql = "SELECT * FROM tbl_stats WHERE UUID=:cid";