Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql “where子句”中的未知列“H”_Mysql - Fatal编程技术网

Mysql “where子句”中的未知列“H”

Mysql “where子句”中的未知列“H”,mysql,Mysql,我已经尝试了所有我能想到的方法来让query识别WHERE子句 $sn等于H-001,sn是列名 以下是查询: $result = mysql_query("SELECT * FROM `insp` WHERE sn = $sn") or die(mysql_error()); 如果我不使用WHERE子句,我可以把所有的事情都解决掉。如果我将$sn设置为不带连字符的直数,则可以得到结果。我想我需要一些东西来识别H-001作为字符串的位置 字符串必须包含在引号中 因此,您需要的sql如下所

我已经尝试了所有我能想到的方法来让query识别WHERE子句

$sn等于H-001,sn是列名

以下是查询:

$result = mysql_query("SELECT * FROM `insp` WHERE sn = $sn") or die(mysql_error());   

如果我不使用WHERE子句,我可以把所有的事情都解决掉。如果我将$sn设置为不带连字符的直数,则可以得到结果。我想我需要一些东西来识别H-001作为字符串的位置

字符串必须包含在引号中

因此,您需要的sql如下所示: 从检验中选择*,其中sn='H-001'

试试这个:

$sn = "H-001";
$sql = "SELECT * FROM insp WHERE sn = '" . $sn . "'";
$result = mysql_query($sql) or die(mysql_error());

您应该将变量用倒逗号括起来

这使得代码

$result = mysql_query('SELECT * FROM `insp` WHERE `sn` = "'.$sn.'"') or die(mysql_error());
另外,请尽快开始使用新的Mysqli函数或PDO

因为mysql本机函数已被弃用,而且非常不安全

更新:-由于您提到表单输入,可能尝试按如下所示键入值

//suppose the value is coming from $_POST['srno'];

$sn = (string) $_POST['srno'];

.....

该死我迟到了3秒:汉克斯,伙计们。我也试过了。到目前为止,我所能理解的是,如果我转到MySQLAdmin并手动输入$sn,那么查询就会工作。或者,如果我写出$sn=H-001,然后将其插入数据库中,查询就会工作。但是,当我从表单中获得$sn并将其插入数据库时,查询就不起作用了。我可以查看数据库并查看条目,但我只能下拉那些我硬编码的条目。谢谢大家的帮助。我发现,通过将变量从一页传递到另一页,变量中添加了一个空格。我使用:$sn=preg_replace'/\s+/',$sn;和var_dump$sn;剥离空间并检查姿势。哇,花了整整5天的时间来寻找这个。谢谢所有回答的人。谢谢。我也尝试过这种格式,但运气不好。它只适用于硬编码变量。嗯,不确定。我试图将变量$sn更改为字符串,看看查询是否能识别它,但只有当我将其写成$sn=H-001时,它才起作用。我将它从一个不起作用的表单传递到数据库。@BryanCombs我刚刚引入了更新我的答案的反引号,并反转了倒逗号,应该起作用。