phpMyAdmin 安装

1.可以先下载至本地然后ftp上传至服务器,或者直接在服务器上下载(使用wget命令),然后解压到服务器上(博主直接解压在网站根目录),随后修改一下文件夹的名称直接改成phpmyadmin

2.切换到改目录下,找到libraries下的config.default.php文件(旧版本是根目录下的config.inc.php文件)进行配置.

// phpMyAdmin的访问网址 如'http://www.lellansin.com/phpmyadmin/'
$cfg['PmaAbsoluteUri']=''; 

// 默认localhost不用修改
$cfg['Servers'][$i]['host'] ='localhost'; 

// 本地调试建议config;如果挂在网上建议用cookie.
$cfg['Servers'][$i]['auth_type'] ='config'; 

// MySQL 用户名 
$cfg['Servers'][$i]['user'] = 'root'; 

// MySQL 密码
$cfg['Servers'][$i]['password'] =''; 

// 你只有一个数据就设置一下,设置为你的数据库名;如果你想架设服务器,那么建议留空 
$cfg['Servers'][$i]['only_db'] = ''; 

// 语言,zh代表简体中文 
$cfg['DefaultLang'] = 'zh'; 

// 若认证方法为cookie,需要设置短语密码,否则会在登录 phpMyAdmin 时提示如下图所示的错误。
$cfg['blowfish_secret'] =''; 

配置好之后即可通过开始设置的网址访问.

phpMyAdmin官方下载地址:

phpMyAdmin 3.5.6

Released Mon, 28 Jan 2013 12:43:11 GMT, see release notes for details.

Version compatible with PHP 5.2 and MySQL 5. Currently recommended version.

File Size MD5 checksum
phpMyAdmin-3.5.6-all-languages.7z 3.6 MiB 3948bde7af87969608216204886ee3b1
phpMyAdmin-3.5.6-all-languages.tar.bz2 4.7 MiB 0aa0125c5b31364aea29dff99a1df684
phpMyAdmin-3.5.6-all-languages.tar.gz 6.0 MiB aa6c996d264f4c04c00cbb2e97f3972a
phpMyAdmin-3.5.6-all-languages.tar.xz 3.6 MiB 8191e7c20110ae5ab98b66e22da5b2a7
phpMyAdmin-3.5.6-all-languages.zip 6.2 MiB e20db36cc950a722ca9129da835b6f3f
phpMyAdmin-3.5.6-english.7z 2.3 MiB 0f2d7272ad8a457bca76ae61578c3a39
phpMyAdmin-3.5.6-english.tar.bz2 2.5 MiB 20038f16aa17a4cdbeee67eed5c24bda
phpMyAdmin-3.5.6-english.tar.gz 2.8 MiB 16666b52fe46e855b66620dffb0fdbc5
phpMyAdmin-3.5.6-english.tar.xz 2.2 MiB 2f46747c100a33d21e37f652d75c75d1
phpMyAdmin-3.5.6-english.zip 3.1 MiB e8e38b5baaa704a36c28ab8adfb28fdf

Testing: phpMyAdmin 4.0.0-alpha2

Released Mon, 28 Jan 2013 13:07:06 GMT, see release notes for details.

Version compatible with PHP 5.2 and MySQL 5. Requires a Javascript-enabled browser.

File Size MD5 checksum
phpMyAdmin-4.0.0-alpha2-all-languages.7z 4.2 MiB 93a39b636143b32825c5cf5b99718154
phpMyAdmin-4.0.0-alpha2-all-languages.tar.bz2 5.5 MiB 6bee1ea9f370e49f2b77fad04182a7cd
phpMyAdmin-4.0.0-alpha2-all-languages.tar.gz 6.9 MiB edf32384644cadb03214acbde0479418
phpMyAdmin-4.0.0-alpha2-all-languages.tar.xz 4.1 MiB 78e31f6fbfd3b83a7af4bcfb9db10e57
phpMyAdmin-4.0.0-alpha2-all-languages.zip 7.1 MiB 18b24e9796c9742312d089f95d8bb3e7
phpMyAdmin-4.0.0-alpha2-english.7z 2.8 MiB 3ccb367ebb7f82d10e9a610604f82a16
phpMyAdmin-4.0.0-alpha2-english.tar.bz2 3.4 MiB 8325c8762dad399ba953c43c3224b84f
phpMyAdmin-4.0.0-alpha2-english.tar.gz 3.8 MiB e03a45577618d2a198714afe14ea1aa2
phpMyAdmin-4.0.0-alpha2-english.tar.xz 2.8 MiB 0bffef958c833fe67e73803b300c4560
phpMyAdmin-4.0.0-alpha2-english.zip 4.2 MiB 9190621f960185bdf1dedd6a3150d75b

C语言入门教程 第9讲 指针与数组

上节课后作业

现在有一个数组,存储的是一个同学的期中考试成绩。

int score[8] = { 75, 86, 70, 88, 62, 87, 69, 77 };

那么现在我们要做的事情是:

1)求总分,求平均分

2)用指针遍历数组,求最大值和最小值

附加题:
用一个二维数组存储八门课的名称,例如:
char course[8][256] = { “chinese”, “English” … }
再用二维数组,存储多个人的成绩,用指针遍历求出每门课的平均分

#include<stdio.h>
#include<stdlib.h>

int main()
{
    // 现在有一个数组,存储的是一个同学的期中考试成绩。
    char course[8][256] = { "语文", "数学", "英语", "物理", "化学", "生物", "历史", "地理" };
    char name[5][256] = {"Alan", "Bob", "Clain", "David", "Elis"};
    int score[5][8];
    int sum[5] = {0};
    float avg[8] = {0};

    int i,j;

    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 8; j++)
        {
            score[i][j] = rand() % 100;
        }
    }


    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 8; j++)
        {
            sum[i] += score[i][j];
            avg[j] += score[i][j];
        }
    }


    for(i = 0; i < 8; i++)
    {
        printf("t%s", course[i]);
    }

    printf("t总分");

    for(i = 0; i < 5; i++)
    {
        printf("n%s", name[i]);
        for(j = 0; j < 8; j++)
        {
            printf("t %d",score[i][j]);
        }
        printf("t%d", sum[i]);
    }

    printf("n平均分");

    for(j = 0; j < 8; j++)
    {
        printf("t%.1f", avg[j] / 8.0);
    }

    printf("n");
    return 0;
} 

字符数组与指针

字符串 == 字符数组+”结尾

// 对于字符串"Hello world"相当于如下的字符数组 
char hi[] = {'h','e','l','l','o',' ','w','o','r','l','d', '\0'};

printf("%c n", hi[1]);  // e
printf("%c n", "Hello world"[1]); // e

因为字符串相当于字符数组,所以”Hello world”[1]越数组hi[1]的值一样。

数组名 == 起始地址

学会自己研究各种变量

1)如何研究?
学会善用printf

2)怎么知道变量是不是一个指针(或地址)
学会使用*

int a[5] = { 1, 3, 5 };

printf("%d",    a);   // 1638196
printf("%d",   *a);   // 1
printf("%d", *(a+1)); // 3

运行成功,表示这个变量的类型即使不是指针,也是一个地址

常见用法:

int a[5] = { 1, 3, 5 };
int *p;
p = a;
printf("%d", *(p+1)); // 3
printf("%d", *(p+2)); // 5

“Hello world”究竟是?

有了上面的两个结论之后,我就可以继续使用printf来探讨更多的东西。
比如”Hello world”这个字符串所代表的意义。
我们已经知道这个字符串实际上就是一个字符数组,通过”Hello world”[1]甚至可以取到其中的值。那么对于这样一个字符串而言它的数组名(地址)是什么?
运用以上相同的方法可以看到:

printf("%d",   "Hello world" );   // 4337572
printf("%d", *("Hello world"));   // 72
printf("%c", *("Hello world"));   // H
printf("%c", *("Hello world"+1)); // e

多个名字如何用char数组存储?

多个人的名字:

char a[256] = "Alan";
char b[256] = "Bob";
char c[256] = "Cici";

现在要用数组来存储这三个人的名字。
也就是要用一个数组来存储三个数组,数组的每一个元素是一个数组:

char name[3][256] = {"Alan", "Bob", "Cici" };

如何使用指针遍历

int arr[8] = { 1, 1, 2, 3, 5, 8, 13, 21 };
int i;
int *p;
// 普通遍历
for(i = 0; i < 8; i++)
{
    printf("%d ", arr[i]);
}
// 指针遍历
for(p = &(arr[0]); p <= &(arr[7]); p++)
{
    printf("%d ", *p);
}
// 数组名获取指针地址
for(p = arr; p < (arr+8); p++)
{
    printf("%d ", *p);
}

本讲小结

1)如何使用指针遍历数组?
使用循环

2)如何研究各种变量?
尝试使用printf

3)数组与指针什么关系?
数组名就是一个地址,指向这个数据的开端

int a[] = {1, 3, 5, 7, 9};
int *p = a;

printf( "%d n",     *p == a[0] ); // 1
printf( "%d n", *(p+1) == a[1] ); // 1
printf( "%d n", *(p+2) == a[2] ); // 1

可以知道:

*(p+n) == a[n]

引申推导:

a[n] = *(p+n)
     = *(n+p)
     = n[a]

即:

a[n] = n[a]

可以这样理解,下标对于数组来说,就是相对于起始地址的一个偏移量。

c语言入门教程 第10讲 字符串处理