【问题标题】:Add to total of field from Database in PHP在 PHP 中添加到数据库中的字段总数
【发布时间】:2012-07-24 00:20:15
【问题描述】:

我有一个脚本,当用户输入我希望它添加到数据库总数中的代码时,我正在使用该脚本,但是没有任何反应。

这是我目前的代码:

$err = array();
if (isset($_POST['doSubmit4']) === true ) // Was if ($_POST['access']=='submit')
{
$code = mysql_real_escape_string($_POST['access-key']); // Was $data['access-key']
$result = mysql_query("SELECT `akid`,`key`,`total_access` FROM access_keys WHERE id='$_SESSION[user_id]' AND type='1'") or die (mysql_error()); 
$num = mysql_num_rows($result);
// Match row found with more than 1 results  - the key exists. 
if ( $num > 0 ) {   
    list($akid,$key,$total_access) = mysql_fetch_row($result);
    if ($code == $key) { 
        if(empty($err)){
            $total_access++;
            mysql_query("update access_keys set total_access='$total_access' where akid='$akid'") or die(mysql_error());
            header("Location: ./");
        }
    } else {
        $err[] = "Invalid Access Key. Please try again with correct access key.";
    }
} else {
    $err[] = "Error - Invalid Access Key. No access exists for your user ID.";
}       
}

我希望每次用户输入正确的代码时都将其添加到“总访问权限”字段中,但它不起作用。

这是我的表单代码:

<form name="postAccess" id="postAccess" method="post" action="access.php">
    <input type="password" name="access-key" id="access-key" style="background-color:black;color:white;" size="40" /><br/>
    <input name="doSubmit4" type="submit" id="doSubmit4" value="submit">
</form>

【问题讨论】:

  • "它不工作。" 问题出在哪里?如果您遇到一些错误,请通过编辑您的问题来附加它们。
  • 强制:您应该使用 PDO 而不是 mysql_* 函数,该代码看起来容易受到 SQL 注入的攻击。
  • 这就是调试的目的。确定问题所在。你有很多 if 语句。我觉得问题出在父括号 (if($_POST['access']=='submit')) 上,因为您没有 else 声明超出这一点。在if 括号中做一些回声,看看什么出现了,什么没有。这将有助于确定您的问题。
  • @Lion 它没有增加 $total_access 数字。假设从数据库中提取该数字并将其加 1,但没有发生任何事情。但它也没有向我的页面抛出任何错误。
  • @Kush 我是 PHP 的 MySQL 方面的新手,不知道如何正确使用它们。如果你能给我一些链接会有所帮助。 :)。 “mysql_real_escape_string”不起作用吗?

标签: php mysql add


【解决方案1】:

如果括号可能是你的父母。

试试:

if (isset($_POST['access']) === true )

而不是

if ( $_POST['access']=='submit' )

如果看起来不行,请进行一些调试。

在 if 括号中加入一些 echo 语句,看看哪些条件为真,哪些不是。

编辑:

我刚刚意识到另一个问题。

您的表单操作无效。这应该是您将数据发布到的页面的路径。所以:

代替:

&lt;form name="access" id="access" method="post" action="access"&gt;

你应该有:

<form name="access" id="access" method="post" action="your-php-path-here.php">

注意上面代码中的action = "your-php-path-here.php"。

【讨论】:

  • 好的,谢谢。我在 if (isset($_POST['access']) === true ) 下的 else 语句中抛出了一个错误,它肯定没有接受 post 操作。所以不知道接下来会发生什么。
  • 试试$_POST['doSubmit4'] 而不是$_POST['access']
  • 刚刚尝试过,效果很好。 :)。就代码而言,它没有进入循环,但现在它没有从密码字段中提取任何信息。我尝试调试以显示我对页面的权限,但到目前为止它是空白的。
  • 嗯...尝试在文档顶部添加print_r($_POST);。在这里发布结果。 xD
  • 知道了! $code = mysql_real_escape_string($data['access-key']); 必须是 $code = mysql_real_escape_string($_POST['access-key']); 感谢您的帮助!
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2021-11-01
相关资源
最近更新 更多