我创建了一个函数,它应该在运行时仅将会话用户的章节值更新为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值没有改变。我做错了吗?
答案 0 :(得分:1)
正如ionutvmi所说,你不能从浏览器运行任何类型的PHP程序。
Javascript在浏览器中使用(或任何其他js解释器) 并且与服务器无关,服务器存储数据(用户表),运行php程序以及任何其他服务器端相关操作。
答案 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']在你的情况下不是空的。