Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript变量转换为PHP->;mysql_Javascript_Php_Mysql - Fatal编程技术网

将Javascript变量转换为PHP->;mysql

将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变量,在一个测试环境中它有点工作,我可以用它更新我的数据库值,但现在它似乎根

我正试图我的Javascript变量分数”插入Mysql数据库,但它似乎不起作用。 下面是Index.php代码

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',然后使用分数,这样我就可以更新数据库了。