
$sql = "select COUNT() FROM user where id = '$user'";
改成
$sql = "select COUNT() as num FROM user where id = '$user'";然后
$num = $result->fetchAll(PDO::FETCH_ASSOC);下面加一条
$Row = $num[0]['num'];然后
if ( $Row == 1 ) { }这样试试?
四、自定义SQL函数或聚合函数
sqlite3_value_xxx这组函数是用于SQL函数或聚合函数内来获取SQLite传入回调函数的参数的。(详见sqlite3_create_function函数或sqlite3_create_function_v2函数)
SQLite允许注册具有相同名称的函数,这些相同名称的函数之间的参数个数或文本编码不能相同。SQLite会根据参数个数或文本编码来调用最合适的回调函数。
非负的nArg参数的回调函数比具有负nArg的函数实现更好的匹配。
其中首选文本编码匹配数据库编码的功能是比编码不同的功能更好的匹配。
其中编码差异在UTF16LE和UTF16BE之间的函数是比编码差异在UTF8和UTF16之间的函数更接近的匹配。
SQLite的内置函数可能会被新的应用程序定义的函数重载。
自定义的SQL函数或聚合函数允许调用SQLite的API函数。但是在自定义的SQL函数或聚合函数内不能调用sqlite3_open、sqlite3_open16、sqlite3_open_v2、sqlite3_step、sqlite3_reset等函数。
下面的例子是自定义一个SQL函数将小写字符串转换成大写的。
第一步、实现SQL函数(提供给SQLite的回调函数)
void test_upper(sqlite3_context ctxtext,int argc,sqlite3_value argv){ int nInput;
char zInput,zOutput,q; / 获取SQLite传递进回调函数中的数据 /
zInput = (char )sqlite3_value_text(argv[0]); / 获取SQLite传递进回调函数中数据的长度 /
nInput = sqlite3_value_bytes(argv[0]); / 根据数据长度来开辟临时内存 /
zOutput = q = (char )sqlite3_malloc(nInput); / 循环将小写的字符转换成大写 /
for(;zInput != '\0';zInput++,q++)
{ if(zInput >= 'a' && zInput <= 'z')
{
q = zInput & 0xdf; //将小写转换成大写
} else
{
q = zInput;
}
} / 执行结果放在zOutput 中使用sqlite3_result_text 函数传递回SQLite /
sqlite3_result_text(ctxtext,zOutput,-1,sqlite3_free); //重点}
注:这里的argc与argv参数与main(int argc,char argv)中的参数功能是一样的。
第二步、注册SQL函数
sqlite3_create_function(db,"TEST_UPPER",1,
SQLITE_UTF8,NULL,&test_upper,NULL,NULL);
第三步、使用SQL函数
SELECT TEST_UPPER(name) FROM table WHERE id = 1;
SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。
但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:
CREATE TABLE student(id integer primary key autoincrement, name varchar(20))
field_count=10啊。你上面不是说过了吗?
if not value:value=0意思是空值设置为0
这里面还有一个问题。通常 为保险。我们创建完表格后会另外弄一个curs进行插入。
另外就是如果id是自动增长型的。你插入值时,第一列就不用插入了。
这个东西就是自己多试吧。python的dbapi是相对比较简单的。略略试验就可以掌握。
以上就是关于php中sqlite3的数据库查询返回值取值全部的内容,包括:php中sqlite3的数据库查询返回值取值、如何在sqlite3连接中创建并调用自定义函数、sqlite 和 java 数据类型对应问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)