我正在尝试运行以下查询,但我不确定my的是否应该是's,$form_id =记录的列,$user_id是名为cf_id的记录的主键。
稍后将在脚本中回显$querydate,因为它从等于$form_id和$user_id的记录中提取日期。
$querydate = mysql_query("SELECT '$form_id' FROM email_history WHERE cf_id = '$user_id'") or die(mysql_error());编辑>>>>>>
在尝试了下面的一些解决方案之后,它似乎工作得很好,但是我没有获得存储在表单名称下的日期,而是得到了这个回显,所以我不确定现在发生了什么::Resource id #120 :Resource id #121 :Resource id #122 :Resource id #123
该表的设置如下:
[USER_ID] [FORM_ID1212212] [FORM_ID1212112]
[1] [2-1-2012] [2-1-2012]
[2] [1-1-2012] [1-1-2012] 发布于 2012-01-03 03:30:38
表名和列名使用反引号(`),字符串使用单引号(')。
$querydate = mysql_query("SELECT `$form_id` FROM email_history WHERE cf_id = '$user_id'"); 仅当您的表名或列名是MySQL保留字时才需要反引号...最佳实践是避免保留字
但也可以考虑切换到PDO并使用预准备语句,或者至少切换到mysqli而不是mysql。
发布于 2012-01-03 03:30:21
最佳实践是:
"SELECT `$form_id` FROM `email_history` WHERE `cf_id` = '$user_id'"字段名和表名(以及数据库名)应该使用反引号,值应该使用引号。
发布于 2012-01-03 03:46:21
您应该:
$form_id是一个合法的表名,特别是当它是从用户提供的输入生成的时候。对$user_id使用绑定参数的
例如:
$sql = "SELECT `$userid` FROM `email_history` WHERE `cf_id` = ?"
$res = $db->query($sql, array($user_id));
while ($row = $res->fetchRow()) {
...
}反划线适用于所有的表名和列名。不幸的是,您不能在参数化查询中使用变量列名,因此您确实需要手动构造查询的该部分。
https://stackoverflow.com/questions/8704587
复制相似问题