将Javascript变量转换为PHP->;mysql
我正试图将我的Javascript变量“分数”插入Mysql数据库,但它似乎不起作用。 下面是Index.php代码将Javascript变量转换为PHP->;mysql,javascript,php,mysql,Javascript,Php,Mysql,我正试图将我的Javascript变量“分数”插入Mysql数据库,但它似乎不起作用。 下面是Index.php代码 var score = 0; function post() { $.post('scoreadder.php',{uscore:score}, function(data){ console.log(score +"hello"); }); } 我看了一个视频,它解释说我可以像这样发送Score变量,在一个测试环境中它有点工作,我可以用它更新我的数据库值,但现在它似乎根
var score = 0;
function post() {
$.post('scoreadder.php',{uscore:score},
function(data){
console.log(score +"hello");
});
}
我看了一个视频,它解释说我可以像这样发送Score变量,在一个测试环境中它有点工作,我可以用它更新我的数据库值,但现在它似乎根本不工作,我相信我遗漏了一些东西。
我已经检查过了,并且我可以看到,自从我记录该函数以来,该函数已从控制台运行
Scoreadder.php脚本
<?php
require_once('db.php');
require('var.php');
$id = $rid['id'];
$score = $_POST['uscore'];
$sql = "UPDATE users SET score='$score' WHERE id='$id'";
$retval = mysql_query( $sql, $link );
echo "SUCCESSFUL!";
mysql_close($link);
?>
这个ID部分应该可以工作
请随时询问更多信息
//编辑
获取ID似乎有问题,因为如果我将代码更新为-
require_once('db.php');
require('var.php');
$id = "2";
//$id = $rid['id'];
$score = $_POST['uscore'];
$sql = "UPDATE users SET score='4321' WHERE id='$id'";
$retval = mysql_query( $sql, $link );
echo "SUCCESSFUL!";
mysql_close($link);
它确实有效。
问题是id在用户之间变化,所以我需要它变化
//更新
require_once('db.php');
require('var.php');
$ids = mysql_query("SELECT id FROM users WHERE email = '$email'");
$iscore = mysql_query("SELECT score FROM users WHERE email = '$email'");
$rid = mysql_fetch_array($ids, MYSQL_ASSOC);
//$id = "2";
//$id = $rid['id'];
$score = $_POST['uscore'];
$sql = "UPDATE users SET score='$score' WHERE id='$id'";
$retval = mysql_query( $sql, $link );
echo "SUCCESSFUL!";
var_dump('id');
mysql_close($link);
更新2
现在的问题似乎是当我试图从“$ID=$rid['ID'];”获取ID时,它返回!dump()时为NULL
更新3
由于连$email都不起作用,会话中出现了一些问题
更新4
出现问题是因为我缺少会话_start();
希望这能帮助和我有同样问题的人 编辑:
事实证明,问题在于访问会话变量时缺少session\u start()
,这导致了空变量和错误的SQL请求。有关更多信息,请参阅对此答案的评论
原始答复: 您不会将
uid
POST变量传递给PHP脚本,只传递uscore
。因此,在SQL中,其中id=''
对于所有行可能都是false,不会更新任何内容
所以你需要把它改成
$.post('scoreadder.php', {uid:id, uscore:score}, function(data){
...
});
或者从其他地方获取id
如果你的ID与其他地方不同,你必须使用该ID!只要你有
$id = $_POST['uid'];
...
$sql = "... WHERE id='$id'";
这行不通!使用$sql=“…其中id='$rid'”代码>或包含id的任何变量
附加说明:
<?php
session_start();
require_once('db.php');
require('var.php');
$email = $_SESSION["email"];
$id = $rid['id'];
$score = $_POST['uscore'];
$sql = "UPDATE users SET score='$score' WHERE id='$id'";
$retval = mysql_query( $sql, $link );
var_dump($id);
mysql_close($link);
?>
在您的代码段中,$retval
被忽略,脚本将返回success,无论它是否真的成功
mysql已弃用,不应再使用。改用。问题在于会话启动();他失踪了。
当会话为null时,其他所有内容也返回null,因此所有内容都会打印出零和其他奇怪的东西
特别感谢@virhonestum帮助我找到这个问题强>
<?php
session_start();
require_once('db.php');
require('var.php');
$email = $_SESSION["email"];
$id = $rid['id'];
$score = $_POST['uscore'];
$sql = "UPDATE users SET score='$score' WHERE id='$id'";
$retval = mysql_query( $sql, $link );
var_dump($id);
mysql_close($link);
?>
因为php代码在javascript代码之前执行。作为它的服务器端executon,我在一个函数中包含PHP,该函数仅在条件为true时运行。这有帮助吗?你在使用AJAX吗?索引应该是AJAX,是的。很可能你现在使用的是更新的PHP安装,而不是非常旧的PHP安装,因此没有mysql\uUcode>功能。自动取款机,我从别的地方取身份证。我试图改变数字,但似乎没有什么不同。我将更新我的问题,以便更清楚地了解我的ID来自何处。@Jonas您的edid没有更改我的答案,但我对其进行了编辑以澄清一点。我更改了它,现在应该进行更新。我现在应该从$rid中获取ID,它在var.php中声明。除了我的身份证问题,看起来还好吗?因为如果只是ID,我可以把它改成数字,然后试着运行脚本看看是否有用,你觉得怎么样?@Jonas,好吧,你的最新编辑确实改变了事情。可能它不起作用,因为数据库连接是用mysql\u close($link)关闭的代码>在您的var.php中,并且在查询之前不会重新打开(至少在这个代码段中是这样)。我删除了它,但它没有帮助。但是我还试了一件事。我将id='$id'更改为id='2',然后使用分数,这样我就可以更新数据库了。