如果我有一个名为 book 的表
Column 1 = current_user
, Column 2 = page_length
, Column 3 = author
, Column 4 = title
我想从第 2、3 和 4 列中选择与当前登录用户相对应的数据。以下语法正确吗?
<?
global $user;
$user_id=$user->name;
db_query('SELECT * FROM {book} WHERE current_user=$user_id', $page_length, $author, $title); ?>
最佳答案
一些提示:
- 您需要确保在 SQL 语句字符串两边使用引号。
- 由于用户名是用户提供的字符串,因此您应该使用参数转义来防止 SQL 注入(inject)。
- 您实际上并不需要将用户名分配给单独的变量 (
$user_id
) 即可使用它。 - 您需要从
db_query
的返回值中检索结果。
固定代码:
<?php
global $user;
$res = db_query("SELECT page_length, author, title FROM {book} WHERE current_user = '%s'", $user->name);
$row = db_fetch_array($res);
// now $row['page_length'], $row['author'] and $row['title'] are filled in with values if the query was successful
?>
关于mysql - drupal 中选择查询的正确语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448176/