1.mysqli_stmt_bind_param
mysqli_stmt_bind_param(no version information, might be only in CVS)
stmt->bind_param – Binds variables to a prepared statement as parameters
DescriptionProcedural style:
bool mysqli_stmt_bind_param ( mysqli_stmt stmt, string types, mixed &var1 [, mixed &…] )
Object oriented style (method):
class mysqli_stmt {
bool bind_param ( string types, mixed &var1 [, mixed &…] )
}mysqli_stmt_bind_param() is used to bind variables for the parameter markers in the SQL statement that was passed to mysqli_prepare(). The string types contains one or more characters which specify the types for the corresponding bind variables
character | description |
---|---|
i | corresponding variable has type integer |
d | corresponding variable has type double |
s | corresponding variable has type string |
b | corresponding variable is a blob and will be send in packages |
$mysqli = new mysqli('localhost', 'root', 'root', 'test');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO documents(group_id,group_id2,date_added,title,content) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('ddsss', $group_id , $group_id2 , $date_added, $title,$content);
$group_id = 1;
$group_id2 = 3;
$date_added = "2015-12-01 11:51:48";
$title = "title";
$content = "content";
/* execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
/* close connection */
$mysqli->close();
2.call_user_func_array
调用回调函数,并把一个数组参数作为回调函数的参数
mixed call_user_func_array ( callable
callback,array
param_arr )
把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。
callback被调用的回调函数。
param_arr要被传入回调函数的数组,这个数组得是索引数组。
返回回调函数的结果。如果出错的话就返回FALSE
function foobar($arg, $arg2) {
echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
function bar($arg, $arg2) {
echo __METHOD__, " got $arg and $arg2\n";
}
}
// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));
echo "<br>";
// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
/*
输出结果
foobar got one and two
foo::bar got three and four
*/
$func = function($arg1, $arg2) {
return $arg1 * $arg2;
};
var_dump(call_user_func_array($func, array(2, 4)));
/*
输出:int 8
*/
3.mysqli_stmt_init
函数初始化声明并返回 mysqli_stmt_prepare() 使用的对象。
mysqli_stmt_init(connection);
$mysqli = mysqli_connect('localhost', 'root', 'root', 'test');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = mysqli_stmt_init($mysqli);
mysqli_stmt_prepare($stmt,"INSERT INTO documents(group_id,group_id2,date_added,title,content) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('ddsss', $group_id , $group_id2 , $date_added, $title,$content);
$group_id = 1;
$group_id2 = 3;
$date_added = "2015-12-01 11:51:48";
$title = "title";
$content = "content";
/* execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
/* close connection */
$mysqli->close();
4.array_splice() array_slice()
array_slice — 从数组中取出一段
array array_slice ( array
array,int
offset [, int
length=NULL[,bool
preserve_keys = false ]] )
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
array
输入的数组。
offset
如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
length
如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
preserve_keys
注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 preserve_keys 设为 TRUE 来改变此行为。
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
/*
Array ( [0] => c [1] => d ) Array ( [2] => c [3] => d )
*/
array_splice — 把数组中的一部分去掉并用其它值取代
array array_splice ( array &
input,int
offset [, int
length=0[,mixed
replacement ]] )
把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用其中的单元取代。
注意 input 中的数字键名不被保留。
Note: If replacement is not an array, it will be typecast to one (i.e. (array) $parameter). This may result in unexpected behavior when using an object or NULL replacement.
input
输入的数组。
offset
如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
length
如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。
replacement
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。
如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。 注意替换数组中的键名不保留。
如果用来替换 replacement 只有一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组、一个对象或者 NULL。
返回一个包含有被移除单元的数组。
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 2));
/*array (size=2)
0 => string 'blue' (length=4)
1 => string 'yellow' (length=6)
*/
var_dump($input);
/*array (size=2)
0 => string 'red' (length=3)
1 => string 'green' (length=5)
*/
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 1, -1));
/*array (size=2)
0 => string 'green' (length=5)
1 => string 'blue' (length=4)*/
var_dump($input);
/*array (size=2)
0 => string 'red' (length=3)
1 => string 'yellow' (length=6)*/
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 1, count($input), "orange"));
/*array (size=3)
0 => string 'green' (length=5)
1 => string 'blue' (length=4)
2 => string 'yellow' (length=6)*/
var_dump($input);
/*array (size=2)
0 => string 'red' (length=3)
1 => string 'orange' (length=6)*/
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, -1, 1, array("black", "maroon")));
/*array (size=1)
0 => string 'yellow' (length=6)*/
var_dump($input);
/*array (size=5)
0 => string 'red' (length=3)
1 => string 'green' (length=5)
2 => string 'blue' (length=4)
3 => string 'black' (length=5)
4 => string 'maroon' (length=6)*/
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 3, 0, "purple"));
/*array (size=0)
empty*/
var_dump($input);
/*array (size=5)
0 => string 'red' (length=3)
1 => string 'green' (length=5)
2 => string 'blue' (length=4)
3 => string 'purple' (length=6)
4 => string 'yellow' (length=6)*/
5.ctype
PHP Ctype函数,Ctype扩展是PHP4.2开始就内建的扩展
该扩展所提供的函数用来检测 在当前的区域设定下(参见 setlocale()),一个字符或者字符串 是否仅包含指定类型的字符。
当使用整数作为参数调用这些函数的时候, 这些函数的行为和 C 语言(ctype.h) 中的对应函数一样。 也就是说,如果传入了小于 256 的整数参数,它会把这个整数当做 ASCII 码值, 来检测对应字符是否符合要求(数值检测的 ASCII 值范围为 0x30-0x39)。 如果传入的参数介于 -128 和 -1 之间(含 -128 和 -1),它会先将其加上 256,然后再进行检测。
当传入参数为字符串的时候,它会对字符串中的每个字符进行检测, 仅当字符串中的每个字符都符合指定条件的情况下才会返回 TRUE。 在 PHP 5.1 之前的版本中,如果传入空字符串总是会返回 TRUE, 从 PHP 5.1 开始,传入空字符串总是会返回 FALSE。
传入除整数和字符串之外的参数 会立即返回 FALSE。
需要提醒的是,如果可以满足需求,请优先考虑使用 ctype 函数, 而不是正则表达式或者对应的 “str_*” 和 “is_*” 函数。 因为 ctype 使用的是原生 C 库,所以会有明显的性能优势。
函数 | 说明 返回值为Boolean型 |
---|---|
ctype_alnum | 检查字符串中是否只包含数字或字母,相当于正则的[A-Za-z0-9] |
ctype_alpha | 检查字符串是否只包含字母 |
ctype_cntrl | 检查字符串中是否只包含” ‘\n’ ‘\r’ ‘\t’ ” 这样的控制字符。 |
ctype_digit | 检查字符串中是否只包含数字。 |
ctype_graph | 检查字符串中是否只包含可以输出的字符。 |
ctype_lower | 检查字符串中是否只包含小写的英文字母。 |
ctype_print | 检查字符串中是否只包含可以打印的字符。 |
ctype_punct | 检查字符串中是否只包含可以打印的字符,并且这样字符不能是非空格、数字、字符。 |
ctype_space | 检查字符串中是否只包含空格或者” ” . |
ctype_upper | 检查字符串中是否只包含大写的英文字母。 |
ctype_xdigit | 检查字符串中是否是16进制的字符串。 |
6.calendar
历法扩展集包括了一系列用于在不同历法间进行转换的函数,它是以Julian Day计数为中介或标准来进行的。Julian Day计数是以公元前的4713年的1月1日为起点的一种计数法。为了在不同历法间进行转换,你首先要转换成Julian Day计数,然后再转换为你所需要的历法。Julian Day计数和Julian历法是非常不同的!Julian Day计数的更多信息可以参考» http://www.hermetic.ch/cal_stud/jdn.htm,历法系统的更多信息可以参考» http://www.fourmilab.ch/documents/calendar/本页中的引用包括在相应的文章中。
函数 | 说明 |
---|---|
cal_days_in_month() | 针对指定的年份和日历,返回一个月中的天数。 |
cal_from_jd() | 把儒略日计数转换为指定日历的日期。 |
cal_info() | 返回有关给定日历的信息。 |
cal_to_jd() | 把日期转换为儒略日计数。 |
easter_date() | 返回指定年份的复活节午夜的 Unix 时间戳。 |
easter_days() | 返回指定年份的复活节与 3 月 21 日之间的天数。 |
FrenchToJD() | 将法国共和历法转换成为儒略日计数。 |
GregorianToJD() | 将格利高里历法转换成为儒略日计数。 |
JDDayOfWeek() | 返回日期在周几。 |
JDMonthName() | 返回月的名称。 |
JDToFrench() | 把儒略日计数转换为法国共和国历法。 |
JDToGregorian() | 把儒略日计数转换为格利高里历法。 |
jdtojewish() | 把儒略日计数转换为犹太历法。 |
JDToJulian() | 把儒略日计数转换为儒略历。 |
jdtounix() | 把儒略日计数转换为 Unix 时间戳。 |
JewishToJD() | 把犹太历法转换为儒略日计数 |
JulianToJD() | 把儒略历转换为儒略日计数 |
unixtojd() | 把 Unix 时间戳转换为儒略日计数 |