php select 来自数据库的行
php select row from database
我有一个名为 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"] ?>
您需要在 SQL 语句中添加占位符
$sql = "SELECT * FROM tbl_stats WHERE UUID=:cid";
非常感谢大家的帮助!
感谢您,成功解决了这个问题!
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();
}
我有一个名为 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"] ?>
您需要在 SQL 语句中添加占位符
$sql = "SELECT * FROM tbl_stats WHERE UUID=:cid";
非常感谢大家的帮助!
感谢您,成功解决了这个问题!
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();
}