You are here: 首页 > 文摘 > PHP开发者常犯的10个MySQL错误

PHP开发者常犯的10个MySQL错误

写于:2012-01-18
数据库是Web大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MySQL也是LAMP架构的重要部分。PHP看起来很简单,一个初学者也可以几个小时内就能开始写函数了。但是建立一个稳定、可靠的数据库确需要时间和经验。下面就是一些这样的经验,不仅仅是MYSQL,其他数据库也一样可以参考。

1.使用MyISAM而不是InnoDB


MySQL有很多的数据库引擎,单一般也就用MyISAM和InnoDB。
MyISAM 是默认使用的。但是除非你是建立一个非常简单的数据库或者只是实验性的,那么到大多数时候这个选择是错误的。MyISAM不支持外键的约束,这是保证数据 完整性的精华所在啊。另外,MyISAM会在添加或者更新数据的时候将整个表锁住,这在以后的扩展性能上会有很大的问题。
解决办法很简单:使用InnoDB。

2.使用PHP的mysql方法


PHP从一开始就提供了MySQL的函数库。很多程序都依赖于mysql_connect、mysql_query、mysql_fetch_assoc等等,但是PHP手册中建议:
如果你使用的MySQL版本在4.1.3之后,那么强烈建议使用mysqli扩展。
mysqli,或者说MySQL的高级扩展,有一些优点:
有面向对象的接口
prepared statements(预处理语句,可以有效防止SQL-注入攻击,还能提高性能)
支持多种语句和事务
另外,如果你想支持多数据库那么应该考虑一下PDO。

3.不过滤用户输入


应该是:永远别相信用户的输入。用后端的PHP来校验过滤每一条输入的信息,不要相信Javascript。像下面这样的SQL语句很容易就会被攻击:
$username = $_POST["name"];
$password = $_POST["password"];
$sql = "SELECT userid FROM usertable WHERE username=?$username?AND password=?$password?;"; // run query...
这样的代码,如果用户输入”admin’;”那么,就相当于下面这条了:
SELECT userid FROM usertable WHERE username=?admin?;
这样入侵者就能不输入密码,就通过admin身份登录了。

4.不使用UTF-8


那些英美国家的用户,很少考虑语言的问题,这样就造成很多产品就不能在其他地方通用。还有一些GBK编码的,也会有很多的麻烦。
UTF-8解决了很多国际化的问题。虽然PHP6才能比较完美的解决这个问题,但是也不妨碍你将MySQL的字符集设置为UTF-8。

5.该用SQL的地方使用PHP


如果你刚接触MySQL,有时候解决问题的时候可能会先考虑使用你熟悉的语言来解决。这样就可能造成一些浪费和性能比较差的情况。比如:计算平均值的时候不适用MySQL原生的AVG()方法,而是用PHP将所有值循环一遍然后累加计算平均值。
另外还要注意SQL查询中的PHP循环。通常,在取得所有结果之后再用PHP来循环的效率更高。
一般在处理大量数据的时候使用强有力的数据库方法,更能提高效率。

6.不优化查询


99%的PHP性能问题都是数据库造成的,一条糟糕的SQL语句可能让你的整个程序都非常慢。MySQL的EXPLAIN statement,Query Profiler,many other tools的这些工具可以帮你找出那些调皮的SELECT。

7.使用错误的数据类型


MySQL提供一系列数字、字符串、时间等的数据类型。如果你想存储日期,那么就是用DATE或者DATETIME类型,使用整形或者字符串会让事情更加复杂。
有时候你想用自己定义的数据类型,例如,使用字符串存储序列化的PHP对象。数据库的添加可能很容易,但是这样的话,MySQL就会变得很笨重,而且以后可能导致一些问题。

8.在SELECT查询中使用*


不要使用*在表中返回所有的字段,这会非常的慢。你只需要取出你需要的数据字段。如果你需要取出所有的字段,那么可能你的表需要更改了。

9.索引不足或者过度索引


一般来说,应该索引出现在SELECT语句中WHERE后面所有的字段。
例如,假如我们的用户表有一个数字的ID(主键)和email地址。登录之后,MySQL应该通过email找到相应的ID。通过索引,MySQL可以通过搜索算法很快的定位email。如果没有索引,MySQL就需要检查每一项记录直到找到。
这样的话,你可能想给每一个字段都添加索引,但是这样做的后果就是在你更新或者添加的时候,索引就会重新做一遍,当数据量大的时候,就会有性能问题。所以,只在需要的字段做索引。

10.不备份


也许不常发生,但是数据库损毁,硬盘坏了、服务停止等等,这些都会对数据造成灾难性的破坏。所以你一定要确保自动备份数据或者保存副本。

11.另外:不考虑其他数据库


MySQL可能是PHP用的最多的数据库了,但是也不是唯一的选择。 PostgreSQL和Firebird也是竞争者,他们都开源,而且不被某些公司所控制。微软提供SQL Server Express,Oracle有10g Express,这些企业级的也有免费版。SQLite对于一些小型的或者嵌入式应用来说也是不错的选择。

原文出处: PHP开发者常犯的10个MySQL错误

请写下您的评论





1.Мгновенный Кредит Онлайн На Любую Банковскую Карту В Киеве Sylviacew 写于 2019-04-27 14:08:03
Как Подключить Безлимитный Интернет На МТС? ----------------------------------- Сейчас же страховщикам на внесение указанных данных выделяется 15 дней. Данные диагностической карты на автомобиль (при необходимости). Одно интересное новшество, введённое с начал 2016 года - камеры автофиксации теперь могут выявлять водителей с просроченной страховкой. Я пока на Росгосстрахе сижу. Иногда финансовое учреждение может запросить какие-либо другие документы, не включенные в список. Не в Ванахейме, - проворчал черноголовый воин, - а в Валгалле расскажешь ты своим братьям, что не были они ни рыжими! В них, во избежание спорных вопросов, предоставлена вся необходимая информация для точного определения суммы оплаты за страховку. Одной из самых популярных и широко рекламируемых является компания «Росгосстрах», являющаяся лидером в своем сегменте рынка. Консультация наших клиентов. Запись клиентов к нашим специалистам. Как видите, каждый из перечисленных тарифных планов можно назвать выгодным в зависимости от того, на каких абонентов он ориентирован. Отправить сову в Министерство. Ему нужно было купить телефон в мвидео. Что лучше: ограбление или налоговая? Представители компании Apple заверили, что отпечатки пальцев будут храниться в зашифрованном виде, и на их сервисы никогда загружаться не будут.|Это один из самых удобных для заемщика способов получить наличные, при этом продолжать пользование машиной. Стоит отметить, что банк может потребовать от заемщика наличие домашнего телефона, номер которого должен быть зарегистрирован на него, а также подтвердить место работы. Стоит ли доверять банку, помогут решить в том числе и многочисленные отзывы. Ренессанс Кредит» — товарный знак, под которым КБ «Ренессанс Капитал» (ООО) (лицензии Банка России на осуществление банковских операций № 3354) предоставляет банковские услуги физическим лицам на территории России. При конвертации 14 500 злотых в 14 295 лир были использованы курсы Центрального Банка РФ на сегодня, 3 августа 2017 года. До 1 января 2007 года в соответствии со ст. 65 и 66 НК РФ в Рос­сии использовались два вида налоговых кредитов: налого­вый и инвестиционный налоговый кредит. В качестве претендента на проведение Олимпийских зимних игр первый раз Сочи выставлял свою кандидатуру в 1994 году, второй раз — в 1998. Третья попытка в 2007 году увенчалась успехом. Перейдите ниже по ссылке, чтобы получить кредит: почта банк
刘虎回复:
2.Польский Злотый. Бумажные Купюры Sylviacew 写于 2019-04-27 13:47:33
Личный Кабинет Банка Тинькофф ----------------------------------- Отдельные моменты управления депозитами (инвестициями) 1Входит ли в сумму ежемесячно капитализируемого дохода по вкладу начисленная сумма налога на доход? Бесплатный телефон 8 800 555 55 00 Сбербанка действует на всей территории Российской Федерации, но не за ее пределами. Для этого нужно вставить пластиковую карту Сбербанка в один из его банкоматов или терминалов оплаты. Договор регулируется и толкуется в соответствии с законодательством РФ. Большинство компаний предоставляют заемщикам возможность подать заявку на оформление кредита в электронном виде. Коэффициент Бонус-Малус (КБМ) на сайте РСА. Однако теперь они провели проверку и всё расставили на свои места: КБМ исправили на 0.6, а излишне уплаченную страховую премию предложили получить на банковский счет. Достигается это за счет «вшития» необходимого программного обеспечения (устанавливаемого на ПК) в само устройство. По всем вопросам следует звонить на 88005100000. Этот номер горячей линии Айманибанка бесплатен для россиян. Этот тариф сделан специально для тех, кому нужно много Интернета. В ходе Крымской войны гарнизоны на побережье были вывезены в Новороссийск, так как в Чёрное море вошла англо-французская эскадра под командованием адмирала Эдмунта Лайонса.|По дебету инвентарных счетов отражается поступление (приход) объектов учета, а по кредиту - их отпуск (затрата). По программе «Спасибо от СБ» начисленные бонусы можно поменять на скидки в организациях-партнерах. По окончании, платежка сохраняется в разделе в виде чека. По собственному желанию клиент может подключиться к программе добровольного страхования. Для обслуживания потенциальных и действующих клиентов существует горячая линия Почта банк. Для этого воспользуйтесь кредитным калькулятором – просто укажите сумму займа, его тип и срок, за который планируете вернуть деньги. Ренессанс полипептид для родителей по такой методике предоставляется всем Президент по большому процентному кредиту – от сладкого (6 салатов) и до 1 типа (12 Китайца кредит банк желательный голову наличными: условия, прогестогены. Информация об отключении электроэнергииВ связи с производством ремонтных работ на ВЛ-10 кВ 04.08.17 с 13:00 до 17:00 будет прекращена подача электроэнергии на х. Наш магазин создан только, чтобы доносить радость до людей! Давно мы ничего так заранее не планировали — но составили список дел, которые нужно успеть сделать до отъезда (около 30 пунктов, например, перевыпустить карты разных банков, купить свежий огнетушитель, продать кучу вещей на авито). Перейдите ниже по ссылке, чтобы получить кредит: почта банк
刘虎回复:
3.Росгосстрах При Дтп Sylviacew 写于 2019-04-26 09:06:51
Купить Дешево Телефон Apple IPhone, Б/у Айфоны, Продажа Новых И Уцененных IPhone ----------------------------------- Условия программы выгодные и доступны всем официально трудоустроенным россиянам, которые не имеют отрицательной кредитной истории в других финансовых учреждениях. Ваша письменное предложение бери добывание кредитной истории находится во обработке. Ещё во времена СССР в Сочи были довольно сильны позиции баптистской общины. За абонентскую плату в 6730 руб/мес абонент имеет возможность не ограниченное время общаться со всеми местными номерам, а также получает пакет в 3000 бесплатных минут и 250 СМС на все междугородные номера России, и во внутрисетевом роуминге. В этот перечень входит и полис ОСАГО, который представляет собой страхование автогражданской ответственности его получателя. В отличие от ОСАГО, эти полисы не являются обязательными, а их оформление осуществляется исключительно по желанию владельца авто. В течении около 10 часов вы сможете просматривать видео, до 5 часов играть в любимые 3D игры или же до двух суток активной работы со смартфоном . Если занятые деньги возвращать на кредитку до 25 числа следующего месяца, то ставка будет нулевой. Если вы уже столкнулись с подобными проблемами при заключении договора ОСАГО через интернет, без квалифицированной юридической помощи не обойтись. Перейдите ниже по ссылке, чтобы получить кредит: почта банк
刘虎回复:
4.kgnvvknh Online Lenders 写于 2019-02-28 15:15:51
loans for bad credit
刘虎回复:
5.qvpsqjez Online Payday Loan 写于 2018-10-20 19:13:58
payday loans in utah online loans no credit direct payday loan lender loans contact number
刘虎回复:
6.nasyywqh Online Loans 写于 2018-10-19 08:50:16
poor credit loans credit loans guaranteed approval commercial loan elastic loans
刘虎回复:
7.hccdvcty Quick Loans 写于 2018-07-20 11:21:55
unsecured personal loans bad credit a loan with bad credit need a loan with bad credit unsecured personal loans bad credit
刘虎回复:
8.jedvlxwv Online Lenders 写于 2018-07-20 03:37:12
tribal loans guaranteed approval loan bad credit loans need a loan with bad credit
刘虎回复:
9.zmxxqyoc Loans For Bad Credit 写于 2018-07-19 20:05:03
loans loan bad credit loans loans
刘虎回复:
10.okswfoee Online Loan 写于 2018-07-16 23:17:50
loans loan bad credit payday loan near me what is an installment loan
刘虎回复:
11.zazzqoqc Getting A Loan 写于 2018-07-16 21:55:29
loans loans bad credit payday loans in nc what is a bank loan
刘虎回复:
12.pikukdes Money Loan 写于 2018-07-15 17:35:07
best loans for bad credit guaranteed loans for bad credit online loans for bad credit online loans bad credit
刘虎回复:
13.lzaluztq Easy Payday Loan 写于 2018-07-15 17:01:35
loans for people with bad credit loans for bad credit need a loan with bad credit payday loans bad credit
刘虎回复:
14.omjfbjxu Payday 写于 2018-07-15 13:36:48
a loan with bad credit loans loans loans for people with bad credit
刘虎回复:
15.kbrzukzp Payday Loans 写于 2018-07-15 11:33:56
direct loan consolidation loans loans for bad credit loans
刘虎回复:
16.ezfdkuuy Loan 写于 2018-07-14 21:55:15
bad credit payday loans what is a bank loan bad credit loans loans
刘虎回复:
17.uioibmzf Quick Loan 写于 2018-07-14 17:29:33
loans loans with bad credit online loans bad credit get a loan today
刘虎回复:
18.ovtfkulr Loans 写于 2018-07-14 12:53:06
loans with bad credit online loans for bad credit payday loans bad credit loans bad credit
刘虎回复:
19.rszpsumj Best Payday Loan 写于 2018-07-14 09:58:26
loans no fax installment loans best loans for bad credit bad credit loans
刘虎回复:
20.iyxxunmn Direct Lender Loans 写于 2018-07-13 20:48:08
loan bad credit a loan with bad credit fast loans no credit check loan with bad credit
刘虎回复:
21.zwvnokhh Loans 写于 2018-07-11 16:58:35
loans stafford loans 1 hour loans loans
刘虎回复:
22.ulqmkuxk Online Loan 写于 2018-07-11 15:09:24
loans bad credit loan online loans for bad credit loans
刘虎回复:
23.pdvdjgjd Speedycash 写于 2018-07-11 10:47:53
no credit check payday direct loan a loan with bad credit title loans
刘虎回复:
24.qthergwg Cash Advance 写于 2018-07-11 05:49:00
loan for bad credit personal payday loans personal unsecured loans business loan
刘虎回复:
25.yejlvclp A Payday Loan 写于 2018-07-10 15:47:06
get a loan today loans in dallas tx loans loans
刘虎回复:
26.lymiawsq Payday Loans 写于 2018-07-10 11:26:36
loans loans for people with bad credit loans loan for bad credit
刘虎回复:
27.gufvvwzl Easy Payday Loan 写于 2018-07-10 07:49:55
bad credit loan lender how does debt consolidation work need a loan with bad credit
刘虎回复:
28.qbfgutoi Instant Online Loans 写于 2018-07-10 04:42:47
loans loans with bad credit loans bad credit indian loans
刘虎回复:
29.wxdpvhhl Quick Loans 写于 2018-07-09 12:33:42
payday loans bad credit online loans for bad credit lender for bad credit loans
刘虎回复:
30.ejrskgrx Payday Express 写于 2018-07-09 07:33:16
online loans bad credit payday loans for bad credit loans what is a bank loan
刘虎回复:
31.jeedsmxt Direct Lender Loans 写于 2018-07-08 23:28:07
online loans for bad credit poor credit rating loans bad credit loan loan with bad credit
刘虎回复:
32.chphiddk Cash Loan 写于 2018-07-08 15:33:18
online loans bad credit best loans for bad credit loans speedy
刘虎回复:
33.casino bonus djnio AfmzpReume 写于 2018-07-08 13:40:37
best online casino free online casino slots online casino games casino slots | best online casinos online casino games
刘虎回复:
34.Hey, Stew 写于 2016-06-26 20:39:37
Hey, kilelr job on that one you guys!
刘虎回复:
35.I will be putting th Betti 写于 2016-06-25 16:17:32
I will be putting this daznzilg insight to good use in no time.
刘虎回复:
36.I wasn’t a hug Tessa 写于 2016-06-24 16:23:07
I wasn’t a huge fan of Birthing From Within…there were some good tips, but it was a little too Xh0;2ippieࢭ for me (and I had a natural home birth so that’s really saying something). Others love it, though, so you might too. I agree with the commenters above though – Ina May’s Guide to Childbirth was easily my favorite pregnancy book.
刘虎回复: