php - 从 ID = $id_variable 的数据库中选择
问题描述
我在我的数据库中有一个名为的表posts
,它有一个通过外键poster_id
链接到id
表中的列。users
users
现在,我想从id 等于的表中选择一些数据poster_id
。我正在使用 PDO,并且我阅读了很多关于它的文章,但我仍然无法修复我的错误。
我从中选择帖子的代码posts
是:
$post_records = $conn->prepare('SELECT * FROM posts ORDER BY RAND()');
$post_records->execute();
$post_results = $post_records->fetchall();
$post_data = NULL;
$posts_count = $conn->query("SELECT count(*) FROM posts")->fetchColumn();
foreach ($post_results as $post_data) {
}
从中选择用户用户名的代码users
等于id
poster_id:
$poster_id = $post_data['id'];
// Collect poster data from database
$poster_records = $conn->prepare('SELECT username FROM users WHERE id = {$poster_id}');
$poster_records->execute();
$poster_results = $post_records->fetchall();
$poster_data = NULL;
foreach ($poster_results as $poster_data) {
}
posts
表结构:http ://prntscr.com/kh8gqz
users
表结构:https ://prnt.sc/kh8h0f
poster_id
外键在posts
表和表之间链接id
。users
额外:此代码给我以下错误:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''users' WHERE 'id' = '1'' at line 1 in F:\xampp\htdocs\home.php:57 Stack trace: #0 F:\xampp\htdocs\home.php(57): PDOStatement->execute() #1 {main} thrown in F:\xampp\htdocs\home.php on line 57
提前致谢。
解决方案
在这里:
$poster_records = $conn->prepare('SELECT username FROM users WHERE id = {$poster_id}');
您在 SQL 语句中使用单引号,因此字符串将按字面意思表示,这意味着变量$poster_id
不会扩展为它的值。用双引号替换语句并重试:
$poster_records = $conn->prepare("SELECT username FROM users WHERE id = {$poster_id}");
编辑:好的,如果这不起作用,请尝试使用绑定参数的准备好的语句,如下所示:
$poster_records = $conn->prepare('SELECT username FROM users WHERE id = ?');
$poster_records->bind_param('i', $poster_id);
$poster_records->execute();
编辑 2:使用 PDO:
$poster_records = $conn->prepare('SELECT username FROM users WHERE id = :id');
$poster_records->execute([':id' => $poster_id]);
推荐阅读
- snowflake-cloud-data-platform - 插入行时生成时间戳
- javascript - 如何避免 D3.js 中的圆圈重叠
- python - Python:如何将系统发育树转换为循环格式?
- php - PHP 启动:无法在 Yii2 中加载动态库 '/usr/lib/php/20151012/pgsq
- javascript - axios 获取请求返回错误 UNDEFINED
- ansible - ansible - 使用 ipmath 将 1 添加到 ip 地址变量
- azure - 有没有办法通过 ARM 模板将加密(CMK-客户托管密钥)和 Vnet 集成添加到 Azure 语音服务(认知)
- spring - 一次测试多个 Spring Boot 服务
- spring-mvc - 结合 Spring Integration 和 @ExceptionHandler
- android - OneSignal Android Studio 获取 FCM 令牌时出现未知错误