不向数据库添加值

时间:2015-06-24 14:37:55

标签: php mysql

我刚创建了一个ajax函数,它将数据发送到php和php到数据库。插入dotp_task_log表,工作正常。但是,当我需要在添加到dotp_task_log之后向dotp_tasks添加数据时,它不会添加,我无法找到原因......我得到了Gerror,这是我的php文件,它将数据添加到数据库。

<?php
$currentUser = isset($_POST['currentUser']) ? $_POST['currentUser'] : '';
$currentTasken = isset($_POST['currentTasken']) ? $_POST['currentTasken'] : '';
$currentPercent = isset($_POST['currentPercent']) ? $_POST['currentPercent'] : '';
    $con = mysql_connect("localhost", "root", "") or die(mysql_error());
    if(!$con)
        die('Could not connectzzz: ' . mysql_error());
    mysql_select_db("foxi" , $con) or die ("could not load the database" . mysql_error());

    $check = mysql_query("SELECT * FROM dotp_task_log");
    $numrows = mysql_num_rows($check);
    if($numrows >= 1)
    {
        //$pass = md5($pass);

        $ins = mysql_query("INSERT INTO dotp_task_log (task_log_creator, task_log_Task) VALUES ('$currentUser' , '$currentTasken')" ) ;

        if($ins)
        {
                $check = mysql_query("SELECT * FROM dotp_tasks");
                $numrows = mysql_num_rows($check);
                if($numrows > 1)
                {
                    //$pass = md5($pass);

                    $inss = mysql_query("INSERT INTO dotp_tasks (task_percent_complete) VALUES ('$currentPercent') WHERE task_id='$currentTasken'" ) ;

                    if($inss)
                    {
                        die("Succesfully added Percent!");
                    }
                    else
                    {
                        die("GERROR");
                    }

                }
                else
                {
                    die("Log already exists!");
                }
        }
        else
        {
            die("ERROR");
        }

    }
    else
    {
        die("Log already exists!");
    }


?> 

2 个答案:

答案 0 :(得分:5)

正如我在评论中所述:

  

INSERT ...没有WHERE子句。 Error checking会发出语法错误信号。 INSERT ON DUPLICATE KEY。您可能想要使用UPDATE

$inss = mysql_query("UPDATE dotp_tasks 
                     SET task_percent_complete = '$currentPercent' 
                     WHERE task_id='$currentTasken'" );

参考文献:

另外,测试时请使用错误检查:

而不是回显自定义消息。

or die(mysql_error())添加到mysql_query()

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

脚注:

答案 1 :(得分:2)

Fred -ii-在他的评论中钉了它 - 你在该查询中使用了不正确的语法。

看起来您需要更新查询,例如:

update dotp_tasks 
set task_percent_complete = '$currentPercent' 
where task_id = '$currentTasken'

此外 - 最好避免通过手动设置字符串来创建查询 - 您需要查看prepared statements以进一步改进此代码。