1

我创建了一个函数,它应该在运行时仅将会话用户的章节值更新为 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

4 回答 4

1

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

Javascript 在您的浏览器(或任何其他 js 解释器)中使用,与服务器无关,服务器是您存储数据(您的用户表)、运行 php 程序和任何其他服务器端相关操作的地方。

这是一个很好的帖子,解释了差异

于 2013-04-02T21:13:57.637 回答
0
"UPDATE users
    SET chapter='1'
    WHERE username='".$_SESSION['username']."'"
于 2013-04-02T20:01:35.663 回答
0

据我所知,您正在尝试使用错误的 js 调用 php 函数。

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

PS: 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 查询

于 2013-04-02T20:36:33.397 回答
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>

文件 2 :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'] 在您的情况下不为空。

于 2013-04-02T22:14:25.420 回答