我在SQL语句中遇到变量问题。我有一个表单,用户可以更新他的个人资料。表单重定向到action.php?action=settings
当我尝试没有$变量时,没有问题!但问题是,我有很多这样的查询,但没有更新。
function change_user_data($trainer) {
require("database.php");
try {
$results = $db->query("UPDATE trainer SET email='$email', status='$status', password='$password' WHERE name='$trainer'");
} catch (Exception $e) {
echo "Data could not be changed!";
exit;
}
}
这是我的action.php
if ($action == "settings") {
$email = $_POST['email'];
$status = $_POST['status'];
$password = $_POST['password'];
change_user_data($trainer);
}
当我echo
$variables
时,它们会显示出来,因此它们不是空的。但是这个查询更新了我的表但没有数据,所以之后一切都是空的。
答案 0 :(得分:0)
我认为问题在于可变范围。
除了全局变量之外,在函数外定义的变量不能用于函数。
你有两种方法。
首先。如果change_user_data函数在action.php文件中,请添加“global $ email,$ status,$ password”,如下所示:
function change_user_data($trainer) {
global $email, $status, $password;
require("database.php");
try {
$results = $db->query("UPDATE trainer SET email='$email', status='$status', password='$password' WHERE name='$trainer'");
} catch (Exception $e) {
echo "Data could not be changed!";
exit;
}
}
或者第二。传递电子邮件,状态,密码数据。然后你可以使用它。
请查看本手册:
答案 1 :(得分:0)
你可以试试这个:
$results = $db->query("UPDATE trainer SET email='".$email."', status='".$status."', password='".$password."' WHERE name='".$trainer."'");
答案 2 :(得分:0)
change_user_data($trainer, $email, $password, $status);
function change_user_data($trainer, $email, $password, $status) {
require("database.php");
try {
$results = $db->query("UPDATE trainer SET email='$email', status='$status', password='$password' WHERE name='$trainer'");
} catch (Exception $e) {
echo "Data could not be changed!";
exit;
}
}
答案 3 :(得分:0)
获取后变量然后检查这些变量 这些是否是空的 如果不为空或NULL则使用具有非空变量的更新查询更新数据库
答案 4 :(得分:0)
可能是
如果那些不起作用
尝试使mysql语法错误并检查这些变量的值,然后就可以定义错误了。
抱歉我的英文不好
答案 5 :(得分:0)
此功能几乎没有问题:
<强>功能强>
function change_user_data($db, $params) {
try {
$sql = "UPDATE trainer SET email= ?, status=?, password=? WHERE name=?";
$stmt = $db->prepare($sql);
$stmt->execute($params);
$success = ($stmt->rowCount() > 0) ? true : false;
} catch (Exception $e) {
echo "Data could not be changed!";
$success = false;
}
return $success;
}
<强>用法强>
require("database.php");
$params = array($trainer, $email, $password, $status);
$user_data_updated = change_user_data($db, $params);
if($user_data_updated){
echo 'user data updated';
}else{
echo 'user data did not update';
}