`
waiting
  • 浏览: 235082 次
  • 性别: Icon_minigender_1
  • 来自: cq
社区版块
存档分类
最新评论

MDB2->quote 对空字符串处理为NULL导致写数据失败

    博客分类:
  • PEAR
PHP 
阅读更多
global $mdb2;
$v = '';
$r = $mdb2->quote($v, 'text', true);
var_dump($r);

结果是 string(4) "NULL"

而数据库字段是 varchar(50) NOT NULL default '' ,于是乎insert into 失败。
prepare() 函数同样的处理。

没找到有参数可设置,于是只有自己写了个函数来实现
/**
 * MDB2:QUOTE() , 当输入空字符串''/"" 时返回字符'',而非NULL
 * @param datatype: 'integer', 'timestamp', 'text',
 * 		'boolean,date', default Automatic
 * @param obj $mdb2
 * @return string or array
 */
function db_quote($input, $datatype = '', $mdb2 = '') {
	if (!$mdb2) { global $mdb2; }
	if (is_object($input)) {
		die('quote input ERR!');
	}

	if ('' === $input) {	// 全等否则数字0将会被处理!
		return "''";
	}
	elseif (is_array($input)) {
		foreach ($input as $k => $v) {
			$out[$k] = db_quote($v, '', $mdb2);	// 对数组处理忽略$datatype参数
		}
	}
	else {
		if ( '' == $datatype) {
			$out = $mdb2->quote($input);
		}
		else {
			$out = $mdb2->quote($input, $datatype);
		}
	}

	return $out;
}


分享到:
评论

相关推荐

    m_pConnection->Execute runtime error

    连接字符串设置为 `"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=ѧ.mdb;PersistSecurityInfo=False"`。 - 如果打开失败,则捕获 `_com_error` 并显示错误消息。 4. **执行 SQL 查询**: - 使用 `pConn->...

    mdb 数据库 手机号码归属地

    数据总数 302791条 电信133 -> 9648 电信153 -> 9828 电信180 -> 9736 电信189 -> 9995 电信181 -> 9713 电信170 -> 1802 电信177 -> 3900 移动134 -> 9742 ...联通176 -> 2390 数据卡145 -> 5937 数据卡147 -> 6427

    VISUAL C++ vc++ ADO 操作access数据库mdb.zip

    总之,Visual C++结合ADO为开发者提供了方便的接口,可以高效地对Access数据库进行读写操作。通过理解并熟练运用Connection、Command、Recordset和Parameter对象,可以实现各种复杂的数据库操作。在进行实际开发时,...

    个性化个人主页网站源码

    本网站有动态留言板,为方便您浏览,浏览前请先建立ODBC数据源,具体步骤如下: 控制面板--------->管理工具----------->数据源(ODBC) ------->用户DNS----->添加--------->Microsoft Access Driver(*.mdb)------...

    MDB-RS232专业版串口MDB接口设备测试工具

    MDB-RS232专业版测试工具,可以通过威佛MDB-RS232适配器对MDB纸币器(08H),硬币器(30H),非现金支付1(10H),非现金支付2(60H),USB设备(40H),年龄验证设备(68H)进行综合测试。当然下载测试工具之前需要...

    手机号码归属地数据库mdb+包含最新号段+187+157+145+182(部分地区)等

    130-->9879;131-->10000;132-->9804;133-->9648;134-->9742;135-->10000;136-->9999;137-->9976;138-->9994;139-->9998;145-->5883;147-->6412;150-->10000;151-->10000;152-->10000;153-->9818;155...

    vc++读写mdb 程序

    标题中的“vc++读写mdb程序”指的是使用Visual C++编程语言操作Microsoft Access数据库的示例项目。在Microsoft Access中,mdb是数据库文件的扩展名,它基于Jet数据库引擎,适用于存储和管理中小规模的数据。这个...

    MDB-Cashless-Test.rar_MDB-Cashless-Test_mdb-rs232_mdb测试工具_vendin

    标题中的“MDB-Cashless-Test.rar_MDB-Cashless-Test_mdb-rs232_mdb测试工具_vendin”提到了几个关键概念,包括MDB协议、非现金支付、RS232-MDB适配器、测试工具以及与自动售货机相关的应用。这些关键词都是IT行业中...

    电话簿管理系统(java课程设计)

    使用说明:首先在控制面板的管理工具里面双击数据源(ODBC)->系统DSN->点击添加->Microsoft Access Driver(*.mdb)->点击完成->数据源名为Telphone->点击选择按钮->选择TelphoneBook(Access文件)点击确定即可;...

    图书管理系统的课程设计 (VC开发,数据库access)

    该系统充分利用了Microsoft Access作为后台数据库,存储和处理图书、借阅者以及借阅信息等数据。以下是关于这个课程设计项目的一些关键知识点: 1. **Visual C++**: VC++是一种强大的集成开发环境,由Microsoft开发...

    基于mfc利用ado读写access文件

    设置数据库连接字符串,例如,如果你的Access数据库名为"MyDatabase.mdb",存储在当前目录下,连接字符串如下: ```cpp CString connStr = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=./MyDatabase.mdb;...

    威佛MDB-RS232适配器的PC发送和接收数据格式解析

    例如,"4D 44 42 2D 52 53 32 33 32 20 56 34 2E 32 20 63 6F 6D 70 61 74 69 62 6C 65 0D 0A"在ASCII格式下显示为"MDB-RS232 V4.2 compatible",这是设备自检的一部分。数据中的其他部分如"30 08 20 30 30"和"30 30...

    VC读写Access数据库实例

    cout << "ID: " << rs->Fields->GetItem("ID")->Value , Name: " << rs->Fields->GetItem("Name")->Value , Age: " << rs->Fields->GetItem("Age")->Value ; rs->MoveNext(); } ``` 写入数据时,可以在打开的...

    vc连接数据库

    rs->EOF) { // 如果记录集不为空 CString strField1 = rs->Fields->GetItem("FieldName1")->Value; // 获取字段"FieldName1"的值 CString strField2 = rs->Fields->GetItem("FieldName2")->Value; // 获取字段...

    CREATE_DB_AND_TABLE_add_edit_del-pw.rar_CREATE_DB_AND_TABLE_Tabl

    1. 创建Connection对象,设置数据库引擎类型和连接字符串,例如: ```cpp CoInitialize(NULL); ADODB::ConnectionPtr conn = NULL; conn.CreateInstance(__uuidof(ADODB::Connection)); conn->ConnectionString = ...

    vc ADO最初入门-Access数据库操作

    3. 设置连接字符串:例如,`BSTR connStr = _bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\myDatabase.mdb;");` 4. 打开连接:`conn->Open(connStr, "", "", adConnectUnspecified);` ### 执行SQL...

    VC 使用ADO插入、删除、修改Access内容.rar

    总的来说,VC++通过ADO访问Access数据库涉及的关键知识点包括:创建和管理`Connection`对象,构造连接字符串,使用`Recordset`对象执行SQL语句,以及操作记录集中的数据。这些基本操作构成了数据库应用程序的基础,...

    VC操作access数据库

    在这个例子中,我们将探讨如何使用VC通过ADO实现对Access数据库的读、写、插入和删除操作。 首先,为了使用ADO,你需要在你的VC项目中包含必要的头文件,如`#include <adodb.h>`,并链接相应的库,如`libadodbc.lib...

    vc++连接access 数据库练习

    本实践项目主要涵盖了如何利用C++编程语言来实现对Access数据库的基本操作,包括添加、删除和修改数据等功能。 首先,要连接Access数据库,你需要使用Microsoft的ActiveX Data Objects (ADO)库。ADO是COM组件,提供...

Global site tag (gtag.js) - Google Analytics