sqlite的联表查询

使用数据库,需要用到多表联合查询,这是关系数据库的特点。sql查询的join有以下几种:

cross join 是笛卡儿乘积 就是一张表的行数乘以另一张表的行数
left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
right join 第二张表的连接列在第一张表中没有匹配是,第一张表中的值返回null
full join 返回两张表中的行 left join+right join
inner join 只返回两张表连接列的匹配项

sqlite的联表查询支持以下几种方式:
0200955153033.gif
left join 、inner join、corss join,其他的方式都等同于以上三种

, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN

php+ajax登录验证代码

    web上会经常遇到登录的情况,一个无刷新的ajax登录方式会给浏览者带来更好的体验。这个代码写了很久了,是上次没做完的一个系统的一部分。由于不是 靠web编程吃饭,php仅仅是个爱好,所以我会经常做些“半截”东西,细想起来真是没有做完一个完整的东西,都是把基本功能实现就没兴趣,就放弃了!有 些代码还是很有用,所以记下来以备将来有用!
    这个登录验证需要用到3个文件:index.html登录界面,ajax.js基本的ajax代码,login.php操作数据库文件。当然还有css样式文件,不影响使用就不发了。

阅读剩余部分...

PHP_pdo 连接

PDO的连接通过创建pdo基础类时实现,无须其他驱动,你只需要使用PDO类名。该构造器参数需指明数据库来源,根据连接需要提供数据库的用户名和密码参数。
一个连接mysql的例子:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

如果在连接过程中产生错误,PDO异常对象将抛出。如果你想处理这些错误情况就可以捕捉这些异常。
处理连接错误的例子:

try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('Select * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: \" . $e->getMessage() . \"
\";
die();
}
?> 

持续连接:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>

读取文件头判断文件类型的php代码

$filename = "D:/296.mid";
$file = fopen($filename, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
switch ($typeCode)
{
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
break;
case 8297:
$fileType = 'rar';
break;
case 255216:
$fileType = 'jpg';
break;
case 7173:
$fileType = 'gif';
break;
case 6677:
$fileType = 'bmp';
break;
case 13780:
$fileType = 'png';
break;
default:
echo 'unknown';
}
echo 'this is a(an) '.$fileType.' file:'.$typeCode;
?>

linux下php还有个函数可以判断文件类型

echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>