2016-06-16 34 views
0

手册我有这样的代码:您的SQL语法有错误;检查对应于您MariaDB的服务器

ANZ=`mysql -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "SELECT count(id) FROM $TABLE WHERE deleted=1 and not lastname='anonym';" --skip-column-names -B;`; 
if [ $((ANZ)) -gt 0 ] 
then 
mysql -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "SELECT id, username FROM $TABLE WHERE deleted=1 and not lastname='anonym' and username like '%@%';" --skip-column-names -B > $FILE; 

cat $FILE | while read TMP 

do 
echo "temp:" ${TMP% *}; 

    UserID=${TMP% *}; 
    echo $UserID >> $RES_FILE; 

    echo "User $UserID wird anonymisiert..."; 
echo $UserID; 

echo '`mysql -u$USER -p$PASSWD -h$HOST -D $DATABASE -e "UPDATE $TABLE SET username="'$A$UserID'", email='[email protected]', firstname='$A', lastname='$A', icq='', skype='', yahoo='', aim='', msn='', phone1='', phone2='', institution='', dep$ 
echo'  `mysql -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "UPDATE mdl_message SET subject='Neue Mitteilung von anonym' WHERE useridfrom=$UserID;"`'; 
echo'  `mysql -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "UPDATE mdl_message_read SET subject='Neue Mitteilung von anonym' WHERE useridfrom=$UserID;"`'; 
    VNAME=`mysql -N -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "SELECT firstname FROM $TABLE WHERE id=$UserID;"`; 
    NNAME=`mysql -N -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "SELECT lastname FROM $TABLE WHERE id=$UserID;"`; 
    `mysql -u $USER -p$PASSWD -h$HOST -D $DATABASE -e "UPDATE mdl_event SET name='Meeting with your Student, anonym' WHERE name LIKE 'Meeting with your Student,%$VNAME $NNAME%';"`; 

done 
echo 
"Finish!" 

而我得到的错误是:

的mysql -u $ USER $ -p -h PASSWD $ HOST -D $ DATABASE -e“UPDATE $ TABLE SET username =”anonym611 [email protected]“,[email protected],firstname = anonym,lastname = anonym,icq =,skype =,yahoo =, aim =,msn =,phone1 =,phone2 =,institution =,department =,address =,city =,country =,url = WHERE deleted = 1 AND id = 611 [email protected];“ ./anonym.sh:Zeile 50:echo
mysql -u $ USER -p $ PASSWD -h $ HOST -D $ DATABASE -e“UPDATE mdl_message SET subject = Neue:command not found。 ./anonym.sh :Zeile 52:echo`mysql -u $ USER -p $ PASSWD -h $ HOST -D $ DATABASE -e“UPDATE mdl_message_read SET subject = Neue:command not found。

错误1064(42000)在第1行:您的SQL语法有错误;请检查与您的MariaDB服务器版本对应的手册,以获取在第1行“[email protected]”附近使用的正确语法。

错误1064(42000)在第1行:您的SQL语法错误;检查对应于您MariaDB的服务器版本在线路附近使用“[email protected]”正确的语法手册1个

+0

请不要使用无关的标记。 –

回答

0

您的SQL错误是在这里:

[...] WHERE deleted=1 AND id=611 [email protected];" 

你要么需要在id=611之后关闭sql查询,或者您的id是611 [email protected],在这种情况下,您需要在其周围添加"。 @Bern Buffen答案后

编辑:

你一定要逃逸查询的每个"

echo 'mysql -u$USER -p$PASSWD -h$HOST -D $DATABASE -e "UPDATE $TABLE SET username=\"$A$UserID\", email=\"[email protected]\", firstname=\"$A\", lastname=\"$A\", icq='', skype='', yahoo='', aim='', msn='', phone1='', phone2='', institution='', department='', address='', city='', country='', url='' WHERE deleted=1 AND id=\"$UserID\";"'; 
+0

非常感谢您的帮助, – 24al

+0

我的代码是:echo''mysql -u $ USER -p $ PASSWD -h $ HOST -D $ DATABASE -e“UPDATE $ TABLE SET username =''$ A $ UserID'”, email='[email protected]',firstname ='$ A',lastname ='$ A',icq ='',skype ='',yahoo ='',aim ='',msn ='',phone1 ='',phone2 ='',院校='',dep $ 和runnung skript后得到这一个:[...] WHERE删除= 1和id = 611 [email protected];“ – 24al

+0

我很抱歉,我的意思是这个代码:echo''mysql -u $ USER -p $ PASSWD -h $ HOST -D $ DATABASE -e“UPDATE $ TABLE SET username =''$ A $ UserID'”,email ='[email protected]',firstname ='$ A',lastname ='$ A',icq ='',skype ='',yahoo ='',aim ='',msn ='',phone1 = '',phone2 ='',institution ='',department ='',address ='',city ='',country ='',url =''WHERE deleted = 1 AND id ='$ UserID';“ ''; 请帮助我。 – 24al

0

你不能在带引号的字符串使用Quirles。使用单引号或反斜杠转义

=“anonym611 [email protected]

+0

非常感谢。你的意思是:mysql -u $ USER -p $ PASSWD -h $ HOST -D $ DATABASE -e“UPDATE $ TABLE SET username =''$ A $ UserID'”,email='[email protected] ',firstname ='$ A',lastname ='$ A',icq ='',skype ='',yahoo ='',aim ='',msn ='',phone1 ='',phone2 ='' ,院校='',部门='',地址='',城市='',国家='',网址=''删除= 1和ID ='$用户ID';“';; 我该怎么办?请帮助我。我是Sql和PHP中的新成员。 – 24al

相关问题