【发布时间】:2015-10-27 19:23:39
【问题描述】:
我有一个表单的 ajax 发布,这样我就可以从 PHP 返回值,就像它在这里显示的那样:https://jonsuh.com/blog/jquery-ajax-call-to-php-script-with-json-return/。 不过有一点点不同,我的 response.php 脚本是这样的:
<?php
session_start();
$email = $_SESSION['email'];
?>
<?php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) {
$action = $_POST["action"];
switch($action) {
case "test": test_function(); break;
}
}
}
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
function test_function(){
$return = $_POST;
$x = $return["Profile"];
define('DB_NAME', 'STUDENTS');
define('DB_USER', 'STUDENTS');
define('DB_PASSWORD', 'PASSWORD');
define('DB_HOST','HOST');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
$db_selected = mysql_select_db(DB_NAME, $link);
$sql = "UPDATE `STUDENTS`.`Students` SET `Fbprofile` = '$x' WHERE `Students`.`StudEmail` = '$email' ";
$return["json"] = json_encode($return);
echo json_encode($return);
}
?>
如您所见,唯一的区别是我正在更新 SQL 数据库。问题是我想更新 StudEmail 等于电子邮件会话变量的 Fbprofile 列。此会话变量在所有其他页面中都可以正常工作,但我似乎无法在我的 response.php 中检索它。实际发生的情况是 SQL 更新有效,但只更新其中没有电子邮件值的所有行,所以我猜它没有读取 $email 变量。 非常感谢您的帮助。
【问题讨论】:
-
var_dump($_SESSION)显示什么?此脚本是否与所有其他脚本位于同一子域和文件夹中?为什么你“猜测”它是$email变量而不是主动调试它? -
我们真的不应该帮你调试自己的代码......
-
只是你需要声明'global $email'来使用函数内部的外部变量
-
而不是全局,为什么不在函数参数中传递呢?测试功能($电子邮件)? test_function() 也可以直接与 $_SESSION 一起使用(坏主意,但你可以)
标签: php sql ajax sql-update session-variables