更新会话用户的值?

时间:2013-04-02 19:50:30

标签: php javascript sql

我创建了一个函数,它应该在运行时仅将会话用户的章节值更新为1,这就是我所做的并存储在名为 chapcomp.php 的文件中:

<?php
$con = (my connection info is here)

$sql = "UPDATE users
SET chapter= '1'
WHERE username="'.$_SESSION['username'].'""

mysql_query($sql,$con);
?>

下面我发布了我的函数来调用php sql查询:

function ChapComp() {
var xmlHttp = null;

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "chapcomp.php", false );
xmlHttp.send( null );
// return xmlHttp.responseText;

我使用此按钮调用该函数:

<br><a href='#' onclick='ChapComp();'>Complete Chapter One!</a><br>

现在当我点击按钮时,没有任何反应,我的数据库中的章节INT值没有改变。我做错了吗?

4 个答案:

答案 0 :(得分:1)

正如ionutvmi所说,你不能从浏览器运行任何类型的PHP程序。

Javascript在浏览器中使用(或任何其他js解释器) 并且与服务器无关,服务器存储数据(用户表),运行php程序以及任何其他服务器端相关操作。

<强> Here is a nice post explaining the difference

答案 1 :(得分:0)

"UPDATE users
    SET chapter='1'
    WHERE username='".$_SESSION['username']."'"

答案 2 :(得分:0)

据我所知,你试图使用js调用php函数,这是错误的。

如果你想调用一些php代码将它存储在另一个文件中,并使用javascript对该文件发出请求。

P.S。:session_start();应放在任何输出之前

编辑:这是一个简短的例子

function ChapComp()
{
var xmlHttp = null;

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "somepage.php", false );
xmlHttp.send( null );
// return xmlHttp.responseText;
}

其中somepage.php是您运行SQL查询的地方

答案 3 :(得分:0)

已实施,并且它会按照您的方式执行操作(在Chrome中检查):

file1: view.html 以及下一个内容(您应该很好地形成您的HTML):

<script type="text/javascript">
function ChapComp() {
 var xmlHttp = null;
 xmlHttp = new XMLHttpRequest();
 xmlHttp.open( "GET", "chapcomp.php", false );
 xmlHttp.send( null );
}
</script>
<br><a href='#' onclick='ChapComp();'>Complete Chapter One!</a><br>

file2: chapcomp.php ,包含下一个内容:

<?php
session_start();
// TODO: remove next line
$_SESSION['username'] = 'test';

$con = mysql_connect( 'localhost', 'dbuser', 'dbpassword') or die('Could not connect to mysql server.' );
mysql_select_db('db_name', $con) or die('Could not select database.');

$sql = "UPDATE users
SET chapter= '1'
WHERE username='".$_SESSION['username']."'";

$result = mysql_query($sql, $con);
?>

请删除

 $_SESSION['username'] = 'test';

我认为$ _SESSION ['username']在你的情况下不是空的。