检查数据库中是否有条目

时间:2013-08-08 08:46:46

标签: mysql string

我已生成一个10位数字,在购买后将其添加到数据库中。

现在我想制作一个php页面给用户一个输入框,让他们输入10位数字,然后点击提交。单击提交后,如果使用了引脚或未使用引脚,则应返回。 (如果不可用则使用 - 如果在表中,则不使用)

我收到了以下代码:

<?php
require_once 'db.php';
function validated_pin($pin)
{   

    $pin = mysql_real_escape_string($pin);  // SECURITY!
    $result = mysql_query("SELECT pins FROM pins WHERE pin='$pin' LIMIT 1");
    if (mysql_fetch_row($result)) {
    return 'This pin has already been used';
    } else {
    return 'This pin is available for use';
}
}

echo '<html><center>
<form action="' . $_SERVER['SCRIPT_NAME'] . '" method="post">
<table style="border:0px solid black;">
<tr>
<td>PIN*:</td><td><input type="text" name="pin" value="" class="bginput"/></td>
</tr>
<tr>
<td></td><td><input type="submit" id ="submit" name="submit1" value="Check Pin>>" class="button"></td>
</tr>
</table>';          
                echo validated_pin($pin);
echo '</center></html>';
?>

PHPmyAdmin看起来像这样: http://gyazo.com/67c3df7171c83c677cb221c04d644ed7.png

它位于_donation和表名称

我不知道到处都在试图寻找

当前代码将返回此错误

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/website/public_html/directory/example.php on line 8

3 个答案:

答案 0 :(得分:0)

您的查询是 -

  $result = mysql_query("SELECT pins FROM pins WHERE pin='$pin' LIMIT 1");

不应该是

  $result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1");

pin是列名吗?不是pins

 if (mysql_fetch_row($result)) {

   if(mysql_num_rows($result)>0)
    return 'This pin has already been used';
    else
    return 'This pin is available for use';

}

答案 1 :(得分:0)

您的查询无法获取数据,导致false返回。

首先 - 你应该抓住这个false值,而不是假设$result有数据。

其次 - var_dump()您正在运行的查询,在PhpMyAdmin中运行

答案 2 :(得分:0)

这似乎解决了它:

$pin = $_POST["pin"];

function validated_pin($pin)
{   

    $pin = mysql_real_escape_string($pin);  // SECURITY!
    $result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1");

    if(mysql_num_rows($result) == 0) {
        return 'This pin has already been used';
            } else {
        return 'This pin is available for use';
             } 
}

在执行任何代码之前,仍然面临着“已经被使用过”的问题。