Php mysql无法识别文本和数字组合
我在下面写了一个简单的问题示例:Php mysql无法识别文本和数字组合,php,html,mysql,Php,Html,Mysql,我在下面写了一个简单的问题示例: <html> <body> <form action="test.php" method="POST"> <input type="text" name="refValue"> <input type="submit" name = "go"> </form> <?php
<html>
<body>
<form action="test.php" method="POST">
<input type="text" name="refValue">
<input type="submit" name = "go">
</form>
<?php
$sql_connect = mysql_connect("localhost","root","root") or die ("no connect");
$sql_data = mysql_select_db("suraj", $sql_connect) or die ("no database");
$refVal = $_POST['refValue'];
$SP = mysql_query("SELECT * FROM data WHERE ref=".$refVal);
while ($col = mysql_fetch_array($SP)) {
echo $col['num'] ;
};
?>
</body>
</html>
当我在文本字段中输入123并按submit时,它会按预期操作并显示32.74。然而,当我在文本框中输入83A并按submit时,我得到一个错误:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\testing\test.php on line 20
我检查了数据库,ref列设置为VCHAR4,num设置为DECIMAL4,2。此特定问题是由于您没有引用字符串而导致的 而不是:
$SP = mysql_query("SELECT * FROM data WHERE ref=".$refVal);
你需要:
$SP = mysql_query("SELECT * FROM data WHERE ref='".$refVal."'");
但是,我强烈建议您使用prepared语句切换到PDO或mysqli,因为mysql_*函数已被弃用,并且存在严重的sql注入问题。首先打印查询并手动在数据库中运行。我认为query/$refVal返回空。你确定$refVal不是空的吗?谢谢,你是正确的,我尝试从ref=123的数据中选择num,效果很好,但当我尝试从ref=83A的数据中选择num时,我得到以下错误:1054-WHERE子句中的未知列“83A”跟随@jeroen的答案。太好了谢谢,现在可以用了。
$SP = mysql_query("SELECT * FROM data WHERE ref='".$refVal."'");