简单的PHP功能不够奇怪

时间:2016-09-16 09:15:23

标签: php function

我有一个非常简单的PHP函数,如果帖子保存在用户的书签中,它会检查数据库。如果它被保存为表格中的书签,那么它应该返回书签的链接,如果没有,则应该返回一个简单的按钮。

这是调用函数的代码:

echo bookmark($id,'stories');

这是PHP函数:

function bookmark($id,$column) {

  global $db_conx;

  if($column = 'stories') { $col = 'storid'; }
  elseif($column = 'discussions') { $col = 'discid'; }
  elseif($column = 'articles') { $col = 'articleid'; }
  elseif($column = 'videos') { $col = 'videoid'; }
  else $col = 'resid';

  $result = mysqli_query($db_conx, "SELECT * FROM bookmarks WHERE '$col'='$id' AND username='$log_username' LIMIT 1");
  $num_rows = mysqli_num_rows($result);
  if ($num_rows > 0) {
  return "<a class='rllink' title='Saved in your bookmarks' href='https://hangar.flights/bookmarks'><i class='fa fa-bookmark'></i></a>";
  }
  else return "<a class='rllink' href="xxxx" title='Save this in your bookmarks'><i class='fa fa-bookmark-o'></i></a>";
};

出于一些奇怪的原因,这似乎并不起作用,尽管我的其他类似功能确实有效。无论我到哪里调用这个函数(使用正确的参数),它都会返回else语句,即使特定的id保存在书签中也应该返回带有书签链接的第一个语句。

任何看到它有什么问题的人?我尝试过调整和更改但没有任何作用。

1 个答案:

答案 0 :(得分:2)

您正在使用assign-in-if:

if($column = 'stories')

执行时,会发生这种情况:

  1. $ column的值成为字符串&#39; stories&#39;
  2. if语句检查$ column的新值是否为truthy
  3. 这几乎可以肯定你想要的东西,你可能想做比较 - 如果这些陈述没有改变你检查的东西的价值:

    if($column == 'stories')
    

    这将检查$ column当前是否等于字符串&#39;故事&#39;没有改变价值。