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);
还原回图片数据了

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.
