在未完全正确移植和测试的Drupal 7模块中将数据库查询从D6更新到D7时 - 以下是在第5行中留下undefinewd变量$ nid的查询示例 - 我有很多这些问题与查询留下未定义的变量错误现在因为D7查询不再返回关联数组 - 仅对象。关于如何修复???
是否有适当的标准编码示例原始D6查询是:
if (db_result(db_query("SELECT * FROM {uc_recurring_stripe} WHERE nid = %d", $item['nid']['#value']))) {
我尝试将其更改为 - 位于 下面的第2行 - 但是在fetchAssoc
处生成了意外T运算符的解析错误 if (isset($item['nid']['#value'])) {
if (db_query('SELECT * FROM {the_table} WHERE nid = :nid', array(':nid' => $item['nid']['#value'])))->fetchAssoc();
$title = function_name($item['nid']['#value']);
if (isset($title)) {
$form['items'][$key]['desc']['#value'] = l($title, 'node/' . $nid);
我也尝试了
if (db_query('SELECT * FROM {the_table} WHERE nid = :nid', array(':nid' => $item['nid']['#value']), array(':nid' => $nid))) {
此代码的任何迭代都会在$ form line(5)上面创建$ nid的未定义变量
来自drupal 7的“if”语句是否也是GONE,并且必须将所有查询重写为foreach循环?
我意识到这样的事情应该起作用
$nid = 1;
$result = db_query('SELECT n.nid, n.title, n.created FROM {the_table} n WHERE n.nid = :nid', , array(':nid' => $item['nid'] ['#value']));
// Result is returned as a iterable object that returns a stdClass object on each iteration
foreach ($result as $record) {
// Perform operations on $record->title, etc. here.
// in this example the available data would be mapped to object properties:
// $record->nid, $record->title, $record->created
}
但是。 。 。这个复杂现在是唯一的方法来从查询??
定义第5行的变量答案 0 :(得分:0)
问题是关于CODING STANDARD声明转换该查询的变量。这不是我原来的代码
我用过
if (isset($item['nid']['#value'])) {
$nid = [ ];
$exists = db_query('SELECT 1 FROM {the_table} WHERE nid = :nid', array(':nid' => $item['nid']['#value']))->fetchField();
if($exists)
{
if ($node = menu_get_object()) {
// Get the nid
$nid = $node->nid;
$title = _function_name($item['nid']['#value']);
显然要声明变量并使其成为对象
$nid = [ ];
if ($node = menu_get_object()) {
// Get the nid
$nid = $node->nid;
答案没有回答关于编码标准的问题 - 我没有宣布KNEW $ nid - 问题是
是否有适当的标准编码示例如何修复???
我已经回答了我自己的问题,但它并没有告诉我这是否是一个正确的编码标准 - 我已经在https://www.drupal.org/node/310072阅读了链接页面并且它没有解决我提出的问题