通过函数传递数据库字段


Passing database fields through functions

我是PHP的初学者,通过观看视频来学习基础知识。我们正在创建一个表单。我了解正在发生的一切,除了以下内容。有人可以向我解释为什么他这样做,而不是---> id='$_SESSION['user_id']";

id='"'.$_SESSION['user_id']."'";
function getuserfield($field){
$query = "SELECT $field FROM users WHERE id='".$_SESSION['user_id']."'";
$query_run = mysql_query($query);
if($query_run){
    return mysql_result($query_run, 0, $field);
}
}

在sql查询中插入变量有很多话要说,但对于初学者来说,只是语法:

在 PHP 中,您可以使用单引号或双引号表示字符串,但单引号内没有变量替换。

在SQL中,字符串必须括在单引号中,结果必须类似于WHERE id='asdf'。所以在示例中WHERE id='".$_SESSION['user_id']."'"等号后面有单引号,然后是字符串结尾,然后是字符串连接,然后是变量、字符串连接、字符串开头、结束单引号 - 这是正确的。

您的id='$_SESSION['user_id']";有不平衡的单引号和双引号。

更好的方法是:使用PDO,预准备语句和绑定变量之类的东西。

还有一点要注意:在数据库中,id列通常是整数类型,这需要不同的解决方案。