PHP的base64_decode及写入mysql前的转义
我看到这个函数解码后返回一个string。
现在我编码前是一个二进制文件流,从图像文件读取来的。如果用这个函数解码并赋值给一个变量,那么应该默认就是一个string变量了。string变量可以存储二进制文件流吗?如果不能,应该怎么做,才能正确解码呢?
另外一个问题是,解码后要将这个二进制流存入到mysql的一个longblob字段里面,我需要对哪些字符进行转义?PHP是不是有专门的函数来一次性实现这个转义的?
补充一下我所用的编码和解码方式:
编码部分(VC端)
char buffer[102400]; //BUF_SIZE大小自己定义DWORD length;//照片图片FILE * pFile = fopen("photo.bmp", "rb");int img = fread(buffer, sizeof(char), 102400, pFile);//将文件二进制流读入到buffer中fclose(pFile);CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,NULL,&length);//获取存放编码后字串所需长度ImgString = new TCHAR[length];//ImgString是要发送给PHP的字串,根据上面获取的长度,初始化该字串length--;//减去最后字串结束符的位置CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,ImgString,&length);//向ImgString里面存放buffer的base64编码
解码并写入数据库部分(PHP+Mysql)
$face = addslashes(base64_decode(trim($_REQUEST['face'],"'")));$query = "update index_base set face=$face where id=$bid";$result = mysql_query($query);
回复讨论(解决方案)
印象中二进制文件和字符串没什么不同啊..
转义用addslashes或者mysql_real_escape_string
我得到的出错提示:
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 '\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0' at line 1
印象中二进制文件和字符串没什么不同啊..
转义用addslashes或者mysql_real_escape_string
。。。二进制里面很多字串结束符的啊
那个出错提示里的错误位置,比mysql请求语句里面尝试写入的二进制流要短得多啊,不是已经转义过了吗,怎么还会截断?
请求里面是这个:
face=BMΗ\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 RZp?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????{??!0 \0\0 RZp??????????????w\\?|???\'?+??????????????????.?[?.+?{???z?z???????np?.0w|?????????????290ryp????|L?\\?|}??.??N???? 1?\00Q\0?q???1! ?`?pP?`@?P0?@ ?P1\0PA pa`??`??`??`??`??`??\0\0?P`?PP?PP?@@?0@? 0? 0? ? ? ? 0?0A\0@Q`Q pa0?qP??`??p??`??`??`??q\0?Q\0?a?……………………后面还有好长
行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟
行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟
即使不解码、不转义,也是错的。
Invalid query: 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 ''Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcID' at line 1Whole query: update index_base set cardtype=1, name='杨妍', sex='0', nationality='汉', birth='19850906', address='南京市鼓楼区广州路213-1号',expiration='20210602', expirebegin='20110602', cardid='321283198509060027',issued='南京市公安局鼓楼分局',SAMID= '05.03-20131218-0001645552-2769328138',IINSNDN='0000000000000000',face='Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcIDwYGDgUFDgUFEAQFDwMEDgIDDQECDQECDQECDgIDDwMEEAQFEQYFEgcGEwgHFQoJFgsKFwwLFg4MFg8NGRIQHBUTHBcVHxoYHBYXGhMXFw8XFwsYDQgYBAUZUlpwo7DJqLXOrbnVsr7at8PftsLetsHftcDet8DeusPhvcbkwMnnw8vrxMzsxc3vxs7wyNDyxc3vwsrsvsbou8PlusLiucHht7/ftr7et8DeucLgusPhu8TiusPhucLguMHft8DeuMHfucLgusPhu8Tiu8XhvMbivcfjwMjkwcnlwsrmw8vnxMzoxc7nx9DpydLry9Ttoam/e4CTHSEwAwUQDxAXHBseExISDQgGDAcFDQYEDAUDDAQCDQUDEAUEEgcGFgkIFgkIFgkIFgkIFgkIFgkIAAAQBwgPBgYOBQUOBQUQBAUPAwQOAgMNAQINAQINAQIOAgMPAwQQBAURBgUSBwYTCAcVCgkWCwoXDAsWDgwWDw0ZEhAcFRMcFxUfGhgcFhcaExcXDxcXCxgNCBgEBRlSWnCjsMmotc6tudWyvtq3w9 2wt62wd 1wN63wN66w G9xuTAyefDy vEzOzFze/GzvDI0PLFze/Cyuy xui7w W6wuK5weG3v9 2vt63wN65wuC6w G7xOK6w G5wuC4wd 3wN64wd 5wuC6w G7xOK7xeG8xuK9x PAyOTByeXCyubDy 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 G x XAyefCy nEzevGzu7Gzu7GzvDGzvDHz/HFze/EzO7Dy 3CyuzCyurDy vEzOzFze3EzevEzevDzOrDzOrByui/yOa9xuS7xOK6w G5wuC3wN62v92zvdmwutatt9OttdGuttKvt9OwuNSxudWwudKvuNGut9Cut9CGjqRiZ3oPEyIAAQwAAQgDAgUIBwcQCwkOCQcOBwUMBQMMBAINBQMQBQQRBgUUBwYUBwYUBwYUBwYUBwYUBwYAAAsDBAsDAwwEBAwEBA0FBQ0FBQ0FBQ0FBQ0FBQwEBA0EBAwDAw4CAw4DAg4DAg8EAxAFBBEGBRIHBhIKCBMMChUODBcQDhcSEBoVExIPDwwICwkGDQgDDyAeLnl7j4qSqJypwqGux6ayzqq20q 717K 2rXA3rjD4b3G5L7H5cDJ58LL6cTM7MPL68PL7cPL7cPL7cLK7MHJ68DI6sDI6sHJ6cLK6sPL68XN7cTN68PM6sPM6sPM6sHK6MDJ577H5b3G5LzF47vE4rrD4brD4bfB3bS 2rG717G51bG51bK61rK61rO716 40ay1zqmyy6ewyX2Fm1ZbbhYaKQAACAAABQEAAwYFBQ4JBwwHBQ0GBAwFAw0FAw0FAxAFBBEGBRQHBhQHBhQHBhQHBhQHBhQHBgAACQMECgQEDQUFDgYGDwcHDwcHDwcHDwcHDwcHDgYGDgUFDQQEDgIDDgMCDgMCDgMCDgMCEAUEEgcGEgoIFAwKFQ4MFxAOGRIQHBUTFA4PDQkMCgcOCQQQJCIygYOXj5etnqvEoq/Ip7PPq7fTsLzYsr7atcDeuMPhvcbkvsflv8jmwMnnwsrqwcnpwcnrwMjqwMjqv8fpv8fpvsbovsbov8fnwMjowsrqxMzsw8zqw8zqw8zqw8zqwsvpwcrowMnnwMnnv8jmvsflvsflvsflu8XhucPftsDctr7atr7atr7atb3Ztb3Zr7jRqrPMpa7HoKnCc3uRSk9iHyMyAAAIAAAFAQADBQQEDQgGDAcFDQYEDQYEDgYEDgYEEAUEEAUEEwYFEwYFEwYFEwYFEwYFEwYFAAAGAwMHBAMKBAQKBAQNBQUNBQUNBQUNBQUNBQUMBAQMBAQMAwMNAQINAgENAgENAgEOAwIPBAMRBgURCQcTCwkTDAoUDQsWDw0YEQ8PDAwJBwoHBQwHAw8eHy54fZCKlKmdqsOhrsemss6qttKuutaxvdm0v922wd 7xOK8xeO9xuS x XAyOi/x e xui9xee9xee9xee9xee8xOa8xOa9xeW/x fAyOjCyurCy nCy nByujByujAyee/yOa x W9xuS9xuS9xuS9xuS x W7xeG5w9 3wd23v9u2vtq2vtq1vdm1vdmut9Coscqiq8Scpb5qcog7QFMYHCsAAAgAAAUBAAMEAwMLBgQLBgQNBgQNBgQOBgQOBgQQBQQQBQQSBQQSBQQSBQQSBQQSBQQSBQQAAAUCAgYDAgkDAwoEBAsFBQsFBQ0FBQ0FBQ0FBQwEBAsDAwsCAgwAAQwBAA0CAQ0CAQ4DAg8EAxAFBBEGBRMIBxIKCBILCRMMChQNCwwJCQcFCAUDCgQBDRgbKnF2iYaQpZypwqCtxqSwzKi00K251a 717K927XA3rrD4bvE4rzF473G5L7G5r3F5bzE5rvD5bvD5bvD5bvD5bvD5bvD5bzE5L7G5sDI6MLK6sHK6MDJ58DJ58DJ577H5b3G5LzF47vE4rzF473G5L3G5L7H5bzG4rrE4LjC3rjA3Le/27a 2rW92bW92a630KewyZ owZihumBofiswQxAUIwAACAAABQEAAwMCAgkEAgkEAgwFAwwFAw4GBA4GBBAFBBAFBBIFBBIFBBIFBBIFBBIFBBIFBAAAAgEBAwIBBgMCBwQDCAUECAUECgQECgQEDAQECwMDCwMDCQEBCQAACgIADQIBDgMCDwQDDwQDEAUEEAUEEQYFDwcFDwgGEAkHEQoICQYGBAIFAgEIAQAMExYlaW6BgoqgnKfAnqvEo6/Lp7PPq7fTrrrWsbzatL/ducLgusPhu8Tiu8TivMTku8PjusLkucHjuMDiuMDiuMDiuMDiucHju8PjvcXlv8fnwcnpwMnnv8jmvsflvsflvMXju8TiusPhucLgusPhvMXjvcbkv8jmvMbiusTguMLeuMDct7/btr7atb3Ztb3ZrLXOpK3GnKW lJ22Vl50GyAzCQ0cAAAIAAAFAQADAwICCAMBCAMBCwQCDAUDDgYEDgYEEAUEDwQDEQQDEQQDEQQDEQQDEQQDEQQDAAABAAABAAACAQADAgEHBAMHBAMJAwMJAwMLAwMKAgIKAgIJAQEJAAAKAgANAgEOAwIQBQQQBQQQBQQQBQQQBQQOBgQOBgQNBgQNBgQGAwMCAAMBAAcAAQwPEyJiZ3p hpyep8CfqsOjrcmnsc2sttKuuNSxuti0vdu4wd 4wd 5wuC6w G7w O5weG4wOK2vuC1vd 1vd 2vuC2vuC3v G5weG7w O9xeXAyOi/yOa x W9xuS9xuS7xOK6w G5wuC4wd 5wuC7xOK9xuTAyee9x O7xeG4wt64wNy3v9u2vtq1vdm1vdmrtM2iq8SYobqPmLFMVGoNEiUDBxYAAAgAAAUBAAMCAQEHAgAIAwELBAIMBQMPBwUOBgQQBQQPBAMQAwIQAwIQAwIQAwIQAwIQAwIAAAkICAMCAQEAAAEAAAcEAwcEAwkDAwkDAwsDAwoCAgkBAQgAAAcAAAgBAAoCAAsDAQ4DAg4DAg8EAw0FAw0FAw0FAw4GBA0GBA0GBAYDAgIBAgEABgABDAwRHVxicnmClpmiupumvqCrxKOwyai00Ku306661rG92bS/3bS/3bXA3rXA3rW/37S 3rS 3rO93bO937O937S 4LS 4LW/4bfB4bnD47vG5L3I5rzH5bvG5LvG5L3G5LvE4rnC4LfA3ra/3bXA3rfC4LjD4bnE4rbB37S/3bK927C72a661q 51a240a630KewyKCpwY YsH Gn0JJXAcLGgEFEAAACAAABQEBAgIBAAYCAAcDAAsFAAsFAAwFAwsEAgwEAgwEAg4DAg0CAQ0CAQ0CAQ0CAQ0CAQAAERAQBgUEAQAAAQAABwQDBgMCCAICCAICCAICBwEBCAAABwAABwAABwAACAEACQIADAQCDAQCDAQCDAQCDAQCDQUDDgYEDgYEDgYECAICAgECAQAGAQAMCg4aVlxsdH2Rlp 3maS8nqnBoq/IqLTQqrbSrbnVsLzYtL/ds77cs77csr3bsrzcsrzcs73ds73dtL7gtL7gtL7gtb/htsDit8HhucPjusXjvMflu8bku8bku8bkvcbku8TiucLgt8Detr/dtL/dtL/dtL/dtL/dsr3bsLvZrLrXq7nWqLfSqLTQp7LLp7DIoqzBn6e9iI jcneLOj1OAQQTAQMOAQIJAgIFBAMEBQIBBgIABwMACgQACgQACwQCCgMBCgMBCwMBDQIBDAEADAEACwAACwAACwAAAAAqKSkUExIBAAABAAAGAwIFAgEFAgEFAgEFAgEEAQAGAAAFAAAHAAAHAAAIAQAJAgAKAwEKAwELBAILBAILBAILBAINBQMNBQMOBQUIAgMCAQIAAAQAAAgTFyNMU2FtdomSnLGWorecp7 grcWntM2qt9CtudWuvdixv9ywvtuwvtuuvNmvudmwutqyvNyzvd20vuC0vt60vt61v9 2wOC3wuC4w G5xOK7xuS7xuS7xuS7xuS9xuS7xOK5wuC2wNy0vtqxvdmxvNquvNmtu9irudaquNWmttOks9Kjsc6irsqhrMWgqcGeqL2dprqBiJtla3shJjIAAg0AAwwFBAsFBAcFBAQFAwAGAgAGAgAGAgAGAgAIAQAIAQAIAQAIAQAJAQAJAQAJAQAIAAAIAAAIAAAAAENCQiMiIQMCAQMCAQYDAgUCAQUCAQQBAAQBAAQBAAYAAAUAAAUAAAUAAAYBAAYBAAkCAAkCAAoDAQoDAQsDAwsDAw0EBA0EBBAEBQgCAwIAAwAABQAACB0hLUJJV2dxgY arZSgtZumvp sxKazzKm2z6251a2817C 26 92q682ay6162316642LC62rK83LS 4LS 3rW/37bA4LfB4bfC4LjD4bjD4bnE4rrF47vG5LvG5L3G5LvE4rnC4LbA3LS 2rC82K 62Ku51qm31KW10qSz0qGx0KCw0Z2typ2pxZumv5miupukuJ6luHyCklxfbgoOGQAACQIDCgcGDAYGBwUEAwUDAAYCAAYCAAYCAAUBAAUAAAUAAAgBAAgBAAgAAAcAAAcAAAcAAAcAAAcAAAAAJiUlLy4tCAcGBQQDAwIBAgEAAgEAAQAAAQAAAQAAAwAAAwAAAwAAAwEAAwEAAwEABgEABgEACQIACgMBCwMDCwMDDAMDDQQEEAQFCgIDBAADAAAEAAAHFholNTxKXmh4ipWoj5yvl6O4nKnBpLHKpbXNqbjTqrvWrr7brLzZqrrXqLjVqbbVq7jXrbrZr7zbtL7gtL7etb/ftcDetsHftsHftsHftsHftsHft8LguMPhucTivcbkusTgt8HdtL7asrzYrbnVq7bUprTRorLPn7DNna3MmazKlqvLlabDlKO kZ62kZuwjpeqjpWjYmdzNTlEBAcQAAAFAAACBgYHBQUFBQQDBQQABgIABQEABQEABQEABQEABQEABgEABgEACQEBCAAACAAABwAABwAABwAAAAALCgo8OzoODQwIBwYCAQACAQACAQABAAABAAABAAABAAABAAADAAADAQADAQADAQAEAgAEAgAGAQAHAgAKAgIKAgIMAwMNBAQQBAULAwQHAAQBAAQAAAcQFB8nLjxVX2 GkaSMmayUoLWap7 jsMmktMyot9KputWtvdqquteouNWmttOks9KnttWsudivvNu0vuC0vt61v9 1wN62wd 1wN60v92zvtyyvdu0v922wd 4w G8xeO5w9 2wNyzvdmxu9ert9Oos9GisM2cq8qZqciVqMiSpsiRpMmNoMCLm7iJlq IkqeAiZx8g5FGSlUSExoAAAYAAAQAAAIFBAUEAwMEAwIFBAAGAgAFAQAFAQAFAQAFAQAFAQAGAQAHAgAJAwMIAgIHAQEGAAAGAAAGAAAAAAcGBisqKSAfHhEQDwIBAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEBAAEBAAEBAAEBAAEBAAQCAAcCAAoCAgoCAgwDAw0EBBAEBQsDBAgBBQIABQAABQoPGBoiLU1YZoOOoImWqJCfspimu6GuxqKyyqS10Ki51Ky82am51qe31KS00aGwz6W006m416672rS 4LS 3rS 3rS/3bXA3rO 3LK927C72a 62LG82rS/3bb
…………
中间省略大段字符串
…………
7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v4AAP7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /gAA妄?????? where id=55556
不解码直接写入成功了。单引号改成双引号就可以了。
然后我试了下用同样的方法写入解码之后的值,也比以前好一点,至少这个长串数据前面有一段能正确识别,mysql报错的位置从数据串中间开始的。
不知道我解码再转义后是否能正确?
base64_encode后的就是字符串了,直接用base64_encode后的入?,出的?候再用base64_decde ??一次就可以了。
尾部的 .../v7 /v7 /gAA妄?????? 哪里来的?
这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号
行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟
我把二进制写进去了……但是图片完全损坏了。
在NaviCat里面可以看到图片的样子,身份证头像脖子领口以上完全歪到图片外面去了,没歪出去的部分也是很多彩色噪点,基本分辨不出来是什么。
如果把二进制字段另存为一个文件,那就根本打不开。
尾部的 .../v7 /v7 /gAA妄?????? 哪里来的?
这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号
我在VC端调试看了发送前的编码串,就是那个样子,看来是我编码不对了啊?
base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了
base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了
我用了wincrypt.h和crypt32.lib。而且两个是在不同地方下载的。会不会版本不一样哦。明天去公司看看。
在网上找个Base64编码的C源代码试试吧,很多啊。而且有很多在线编码的网页可以用来验证编码和解码是否正确:http://www1.tc711.com/tool/BASE64.htm
base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了
是在C语言里编码的时候,长度少了一位,把字符串结束符给截掉了。
改成JpgBack = new TCHAR[length+1];,后面的lentth--删掉,就没有乱码了。
但是还有个问题怎么解决啊,我得到的字串每64个字符就有一个换行。怎么把换行截掉?
对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了
对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了
我现在已经找到办法删掉回车和换行了。
但是,但是又出问题了。。。
传输过去之前的编码是正常的,我能用网上找到的编解码器恢复成图像。
而且我是特地断点检查了发送前的postdata字串里面的,都是对的。
但是一旦传递到PHP这边,我用$face = $_REQUEST['face'];接收传参,立刻die ($face),结果出来的字串,所有的加号(+)全部被替换成了空格。
这是怎么回事啊
我知道这些都能在日后读取的时候处理,但是我们老板不懂技术,我最好是从mysql里面复制出来直接能解码给他看。。。
+ 变成 空格 是 URL 解码的功劳
$face = str_replace(' ', '+', $_REQUEST['face']);
换回来就是了
$img = base64_decode($face);
还原回图片数据了

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP bleibt in der modernen Webentwicklung wichtig, insbesondere in Content-Management- und E-Commerce-Plattformen. 1) PHP hat ein reichhaltiges Ökosystem und eine starke Rahmenunterstützung wie Laravel und Symfony. 2) Die Leistungsoptimierung kann durch OPCACHE und NGINX erreicht werden. 3) Php8.0 führt den JIT -Compiler ein, um die Leistung zu verbessern. 4) Cloud-native Anwendungen werden über Docker und Kubernetes bereitgestellt, um die Flexibilität und Skalierbarkeit zu verbessern.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP und Python haben jeweils ihre eigenen Vorteile und eignen sich für verschiedene Szenarien. 1.PHP ist für die Webentwicklung geeignet und bietet integrierte Webserver und reichhaltige Funktionsbibliotheken. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit prägnanter Syntax und einer leistungsstarken Standardbibliothek. Bei der Auswahl sollte anhand der Projektanforderungen festgelegt werden.
