这个问题在这里已经有了答案:
mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc... expects parameter 1 to be resource
(31 个回答)
8年前关闭。
我在下面写了一个简单的问题示例:
<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)
.
最佳答案
这个特定的问题是因为你没有引用你的字符串引起的。
代替:
$SP = mysql_query("SELECT * FROM data WHERE ref=".$refVal);
你需要:
$SP = mysql_query("SELECT * FROM data WHERE ref='".$refVal."'");
然而 ,我强烈建议您使用准备好的语句作为
mysql_*
切换到 PDO 或 mysqli函数已被弃用,并且您遇到了严重的 sql 注入(inject)问题。
关于php - mysql 无法识别文本和数字组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838445/