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)。“WHEREMemberID
=$session\u MemberID”)或死亡(mysql\u error());打印(查询)`
UPDATE `oddjob` SET `OddJobName`= 'test',`Description`='test',`DaysAvailable`='Friday' WHERE `MemberID` = 30