mysql无法识别文本和数字组合

时间:2014-02-17 20:14:03

标签: php html mysql

我在下面写了一个简单的问题示例:

<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)

1 个答案:

答案 0 :(得分:2)

引起此特定问题是因为您没有引用字符串。

而不是:

$SP = mysql_query("SELECT * FROM data WHERE ref=".$refVal);

你需要:

$SP = mysql_query("SELECT * FROM data WHERE ref='".$refVal."'");

但是,我强烈建议您使用预处理语句切换到PDO或mysqli,因为mysql_*函数已被弃用,并且您有严重的SQL注入问题。