Php 更新用户配置文件的查询不起作用

Php 更新用户配置文件的查询不起作用,php,phpmyadmin,sql-update,user-profile,Php,Phpmyadmin,Sql Update,User Profile,我尝试允许用户更新他们的个人资料,并使用以下功能进行即时通讯: function update_user($update_data){ global $session_MemberID; $update = array(); array_walk($update_data, 'array_sanitize'); foreach($update_data as $field=>$data){ /

我尝试允许用户更新他们的个人资料,并使用以下功能进行即时通讯:

function update_user($update_data){
            global $session_MemberID;
            $update = array();
            array_walk($update_data, 'array_sanitize');

            foreach($update_data as $field=>$data){ //loop through update data in update_info.php
                $update[] = '`' . $field . '` = \'' . $data . '\''; 
            }
            //print_r($update);
            //die();
            mysql_query("UPDATE `oddjob` SET " . implode(', ', $update). " WHERE `MemberID` = $session_MemberID") or die (mysql_error());

}

if (logged_in() ===true) {
    $session_MemberID = $_SESSION['MemberID'];//grabbing value from login
    $user_data= user_data($session_MemberID,'MemberID','Name','Address','Postcode','DOB','Mobile','CoinsAvailable','Email','Password','RepeatPassword','OddJobName','Description','DaysAvailable','profile');
    exit();
    }
这是更新页面。(仅相关代码)

当我为用户输入新信息时,出现以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
当我打印出
$update
时,我得到:

Array ( [0] => `MemberID` = '30' [1] => `OddJobName` = 'test' [2] => `Description` = 'test' [3] => `DaysAvailable` = 'Friday ' )
这看起来不错,所以我不确定我的问题出在哪里。如果我将更新查询放入phpmyadmin,如:

UPDATE `oddjob` SET `OddJobName`= test,`Description`=test,`DaysAvailable`=Friday, WHERE `MemberID` = 30
我得到了错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE MemberID = 30' at line 1
(oddjob表中的MemberID是外键。 MemberID是成员表中的主键。)

我在SQL方面没有天赋…你可以看出,如果可以的话,请帮助我

首先: . 它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO

关于您的问题,您正在使用
global$session\u MemberID
,即使您的
$update\u data
数组中已经有该ID。我打赌
$session\u MemberID
是空的,这就是第一次查询失败的原因。 尝试在代码中使用此查询:

$sql = "UPDATE `oddjob` SET " . implode(', ', $update). " WHERE `MemberID` = ".intval($update['MemberID']);
关于phpMyAdmin查询,有一个错误,
WHERE
前面有一个尾随逗号,请尝试使用此查询:

UPDATE `oddjob` SET `OddJobName`= 'test',`Description`='test',`DaysAvailable`='Friday' WHERE `MemberID` = 30

作为提示:
$update[]='``$字段''`=\''$数据“\”可以写成
$update[]=“{$field}`=”{$data}”以提高可读性。并将字符串类型的数据用引号括起来:
更新oddjob SET OddJobName='test',Description='test',DaysAvailable='Friday',其中MemberID=30
他的代码似乎没有问题。(在
之前没有逗号,其中
)不是在第一个查询中,在他对phpMyAdminOf课程运行的查询中,我看到了这一点。但是他也说他在运行脚本时出错了。我知道,这就是为什么我写了关于phpMyAdmin查询的文章。他的脚本的问题可能是一个空的
$session\u MemberID
值,如我所说said@Uby您对phpmyadmin的查询非常有效,谢谢。我以前在我的
update\u user
函数中打印查询很累,但实际上没有打印任何内容,您能推荐一种打印查询的方法吗。我试过:echo
“更新
oddjob`SET”。内爆(“,”,$update)。“其中
MemberID
=$session\u MemberID”`我也厌倦了
$query=mysql\u query(“UPDATE
oddjob`SET”。内爆(',',$UPDATE)。“WHERE
MemberID
=$session\u MemberID”)或死亡(mysql\u error());打印(查询)`
UPDATE `oddjob` SET `OddJobName`= 'test',`Description`='test',`DaysAvailable`='Friday' WHERE `MemberID` = 30