我在下面写了一个简单的问题示例:
<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>
它连接的表基本上是两列,有两行,显示为:
**ref** --- **num**
123 --- 32.74
83A --- 29.54
当我在文本字段中输入123并按提交时,它按预期执行并显示32.74但是,当我将83A放入文本框并按提交时出现错误:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\testing\test.php on line 20
我检查了数据库,ref列设置为VCHAR(4)
,num设置为DECIMAL(4,2)
。
答案 0 :(得分:2)
引起此特定问题是因为您没有引用字符串。
而不是:
$SP = mysql_query("SELECT * FROM data WHERE ref=".$refVal);
你需要:
$SP = mysql_query("SELECT * FROM data WHERE ref='".$refVal."'");
但是,我强烈建议您使用预处理语句切换到PDO或mysqli,因为mysql_*
函数已被弃用,并且您有严重的SQL注入问题。