在PHP查询中使用选择和更新


Using Select and Update in PHP query

我是php的新手。。无论如何,我有一个申请,要求从数据库中向主管提供假期信息,然后允许主管输入他对这个假期的批准,

为此,我使用了2个php页面:

  • 一个用于检索员工休假请求信息
  • 另一个将主管批准插入数据库

我希望应用程序将此批准值插入到我在该应用程序中检索其信息的该员工ID的记录中。

检索员工信息是正确的,但是插入不起作用!

我尝试了这个查询,但它不起作用(当我完成查询时,它没有返回任何结果):

<?php
if(! $conn)
{
    die('Could not connect: '.mysql_error());
}
mysql_select_db("a2202757_OURDATA",$conn);
$flag['code']=0;
if($r = mysql_query ("UPDATE request_vacation SET VacationApprove='".$_POST['Approval']."' WHERE IDEmployee=$id",$conn));
{
$flag['code']=1;
}
print(json_encode($flag));
mysql_close($conn);
?> 

问题出在哪里?

发生的情况是在if语句中分配一个变量(=是用于比较的赋值,您使用==或===)。

当你想同时检查和分配时,使用这个:

if(false !== $r = $mysql_query("UPDATE .......") {
    echo 'Update successfull';
}
else {
     echo 'Update failed with error ' . mysql_error();
}

如果不提供任何有关数据库连接的错误消息,则很难解决问题。请使用以下代码并使用您的主机和用户名密码让php打印出错误消息。如果您能提供更多的错误信息,这将非常有用。

    $conn = mysql_connect('localhost','username','password');
    if(! $conn)
    {
        die('Could not connect: '.mysql_error());
    }
    $db_selected = mysql_select_db("a2202757_OURDATA",$conn);
    if (!$db_selected) {
        die ('Can''t use foo : ' . mysql_error());
    }
    $flag['code']=0;
    $r = mysql_query ("UPDATE request_vacation SET VacationApprove='".$_POST['Approval']."' WHERE IDEmployee=$id",$conn);
    if (!$r) {
        $message  = 'Invalid query: ' . mysql_error() . "'n";
        $message .= 'Whole query: ' . $query;
        die($message);
    }
    if($r != null);
    {
        $flag['code']=1;
    }
    print(json_encode($flag));
    mysql_close($conn);

试试这个

<?php
if (isset ( $_POST ['Approval'] )/* && isset ( $_POST ['IDEmployee'] )*/) {
    mysql_connect ( 'server', 'username', 'password' ) or die ( mysql_error () );
    mysql_select_db ( 'a2202757_OURDATA' );
    // mysql_query ( "UPDATE request_vacation SET VacationApprove='" . $_POST ['Approval'] . "' WHERE IDEmployee= '" . $_POST ['IDEmployee'] . "'" ) or die ( mysql_error () );
    // Hey, What is $id, I leave it up to you.
    mysql_query ( "UPDATE request_vacation SET VacationApprove='" . $_POST ['Approval'] . "' WHERE IDEmployee= '" . $id . "'" ) or die ( mysql_error () );
    if (mysql_affected_rows () != - 1) {
        // some rows has affected
        echo mysql_affected_rows () . 'rows has affected';
    } else {
        // No row has affected
    }
} else {
    die ( 'Approval '/* . 'and/or IDEmployee'*/ . ' are not properly set' );
}
?>

并且,请提供更多详细的

我认为您的代码格式在stackexchange上被破坏了。下面是一个如何使用查询的示例,因为您的代码似乎相当混乱和无意义。注意:不要在生产环境中使用它,因为它包含一些SQLInjection漏洞。

$id = $_POST["IDEmployee"];
// this sets the VacationApprove clumn of request_vacation 
// to the $_POST['Approval'] variable where IDEmployee matches
// the previously selected $id
$insRes = mysql_query("UPDATE request_vacation SET VacationApprove = '".$_POST['Approval']."' WHERE IDEmployee = '".$id."'")

我不知道你在努力实现什么。请详细说明你的问题。