很多站长朋友们都不太清楚php与mysql题,今天小编就来给大家整理php与mysql题,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php 面试必考题 mysql的MyISAM 和 InnoDB 的区别 2、 PHP求助,求大神帮助用PHP和MYSQL知识编写一道基础题。 3、 请教几个PHP与MYSQL的问题 高手进来看下 4、 用php+mysql做一个题库系统,随机抽取五百题左右生成考试卷,最有效率的做法是什么? php 面试必考题 mysql的MyISAM 和 InnoDB 的区别1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from
table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含
where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。MyISAM 是表所
innodb是行锁
5.LOAD TABLE FROM MASTER(从主负载表)操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update
table set num=1 where name like “"2%”
6.InnoDB 支持事物
选择存储引擎 根据实际情况选择。
一般情况下如果查询多建议使用myIsam 。
如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。
优化MYSQL数据库的方法:
1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM
2,使用join代替子查询
3,使用联合(UNION)来代替手动创建的临时表
4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)
5,适当建立索引(如何建立索引?索引的利与弊?)
6,优化sql语句
7,explain可以看到mysql执行计划
8,分表(垂直分表,水平分表?)
9,数据库主从
PHP求助,求大神帮助用PHP和MYSQL知识编写一道基础题。<?php
class OneFileLoginApplication
{
private $db_type = "sqlite";
private $db_sqlite_path = "./users.db";
private $db_connection = null;
private $user_is_logged_in = false;
public $feedback = "";
public function __construct()
{
if ($this->performMinimumRequirementsCheck()) {
$this->runApplication(); } }
private function performMinimumRequirementsCheck()
{
if (version_compare(PHP_VERSION, '5.3.7', '<')) {
echo "Sorry, Simple PHP Login does not run on a PHP version older than 5.3.7 !";
} elseif (version_compare(PHP_VERSION, '5.5.0', '<')) {
require_once("libraries/password_compatibility_library.php");
return true;
} elseif (version_compare(PHP_VERSION, '5.5.0', '>=')) {
return true;
} return false;}
public function runApplication()
{
if (isset($_GET["action"]) $_GET["action"] == "register") {
$this->doRegistration();
$this->showPageRegistration();
} else {
$this->doStartSession();
$this->performUserLoginAction();
if ($this->getUserLoginStatus()) {
$this->showPageLoggedIn();
} else {
$this->showPageLoginForm();
}}}
private function createDatabaseConnection()
{
try {
$this->db_connection = new PDO($this->db_type . ':' . $this->db_sqlite_path);
return true;
} catch (PDOException $e) {
$this->feedback = "PDO database connection problem: " . $e->getMessage();
} catch (Exception $e) {
$this->feedback = "General problem: " . $e->getMessage();
}
return false;
}
private function performUserLoginAction()
{
if (isset($_GET["action"]) $_GET["action"] == "logout") {
$this->doLogout();
} elseif (!empty($_SESSION['user_name']) ($_SESSION['user_is_logged_in'])) {
$this->doLoginWithSessionData();
} elseif (isset($_POST["login"])) {
$this->doLoginWithPostData();
}}
private function doStartSession()
{ session_start(); }
private function doLoginWithSessionData()
{ $this->user_is_logged_in = true; }
private function doLoginWithPostData()
{ if ($this->checkLoginFormDataNotEmpty()) {
if ($this->createDatabaseConnection())
{ $this->checkPasswordCorrectnessAndLogin(); }}}
private function doLogout()
{ $_SESSION = array();
session_destroy();
$this->user_is_logged_in = false;
$this->feedback = "You were just logged out."; }
private function doRegistration()
{ if ($this->checkRegistrationData()) {
if ($this->createDatabaseConnection()) {
$this->createNewUser(); }}
return false; }
private function checkLoginFormDataNotEmpty()
{
if (!empty($_POST['user_name']) !empty($_POST['user_password'])) {
return true;
} elseif (empty($_POST['user_name'])) {
$this->feedback = "Username field was empty.";
} elseif (empty($_POST['user_password'])) {
$this->feedback = "Password field was empty.";
} return false; }
private function checkPasswordCorrectnessAndLogin()
{
$sql = 'SELECT user_name, user_email, user_password_hash
FROM users
WHERE user_name = :user_name OR user_email = :user_name
LIMIT 1';
$query = $this->db_connection->prepare($sql);
$query->bindValue(':user_name', $_POST['user_name']);
$query->execute();
$result_row = $query->fetchObject();
if ($result_row) {
if (password_verify($_POST['user_password'], $result_row->user_password_hash)) {
$_SESSION['user_name'] = $result_row->user_name;
$_SESSION['user_email'] = $result_row->user_email;
$_SESSION['user_is_logged_in'] = true;
$this->user_is_logged_in = true;
return true;
} else { $this->feedback = "Wrong password."; }
} else { $this->feedback = "This user does not exist."; }
return false; }
private function checkRegistrationData()
{ if (!isset($_POST["register"])) {
return false; }
if (!empty($_POST['user_name'])
strlen($_POST['user_name']) <= 64
strlen($_POST['user_name']) >= 2
preg_match('/^[a-z\d]{2,64}$/i', $_POST['user_name'])
!empty($_POST['user_email'])
strlen($_POST['user_email']) <= 64
filter_var($_POST['user_email'], FILTER_VALIDATE_EMAIL)
!empty($_POST['user_password_new'])
!empty($_POST['user_password_repeat'])
($_POST['user_password_new'] === $_POST['user_password_repeat'])
) {
return true;
} elseif (empty($_POST['user_name'])) {
$this->feedback = "Empty Username";
} elseif (empty($_POST['user_password_new']) || empty($_POST['user_password_repeat'])) {
$this->feedback = "Empty Password";
} elseif ($_POST['user_password_new'] !== $_POST['user_password_repeat']) {
$this->feedback = "Password and password repeat are not the same";
} elseif (strlen($_POST['user_password_new']) < 6) {
$this->feedback = "Password has a minimum length of 6 characters";
} elseif (strlen($_POST['user_name']) > 64 || strlen($_POST['user_name']) < 2) {
$this->feedback = "Username cannot be shorter than 2 or longer than 64 characters";
} elseif (!preg_match('/^[a-z\d]{2,64}$/i', $_POST['user_name'])) {
$this->feedback = "Username does not fit the name scheme: only a-Z and numbers are allowed, 2 to 64 characters";
} elseif (empty($_POST['user_email'])) {
$this->feedback = "Email cannot be empty";
} elseif (strlen($_POST['user_email']) > 64) {
$this->feedback = "Email cannot be longer than 64 characters";
} elseif (!filter_var($_POST['user_email'], FILTER_VALIDATE_EMAIL)) {
$this->feedback = "Your email address is not in a valid email format";
} else {
$this->feedback = "An unknown error occurred.";
} return false; }
//没办法,不允许发这么多字;
请教几个PHP与MYSQL的问题 高手进来看下1,密码对比问题,如果两个人的密码相同,该怎么办?这个情况是一定可能出现的,建议先查询输入的用户名,看用户是否存在,存在然后再匹配密码
2,增加和减少积分问题,用update,比如增加:update 表 set jifen=jifen+10 where ...
减少:update 表 set jifen=jifen-10 where ...
用php+mysql做一个题库系统,随机抽取五百题左右生成考试卷,最有效率的做法是什么?php里面有array_rand函数,你要是一道题一道题的读出来,或许也可以尝试一下。但是要是一下子都读出来,即便这个函数效率可以的话,随机取出id数组,查询 “where id in 数组” 就不如直接在数据库里随机抽取记录。\x0d\x0a如何从数据表里随机抽取记录呢,想想办法还是有一些,就是不知道效率如何。有的是说用max_id*rand(),那一条一条抽取还是可以的。怎么批量随机抽取呢,可以试着排序,然后选取前500题,排序可以想办法用一些函数(选取一些执行效率高的),如何md5,sha1,这种。如果为了使结果更具有随机性,可以把字段值再与一个随机数运算一下。仅供参考。\x0d\x0a========================\x0d\x0a我想你还是用array_rand随机抽500个id存到数组,然后遍历数组吧。这样也避免了题目重复。在数据库里如果一次一条记录随机抽取,要考虑碰巧重复的问题。批量选取你就按上面我说的试试。
关于php与mysql题的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php与mysql题 php与mysql程序设计的详细内容...