使用通过 ODBC 访问的条件表达式中的数据类型不匹配

Posted

技术标签:

【中文标题】使用通过 ODBC 访问的条件表达式中的数据类型不匹配【英文标题】:Data type mismatch in criteria expression using Access via ODBC 【发布时间】:2011-04-22 02:48:10 【问题描述】:
$conn=odbc_connect('mobshopDB','','');
    if(!$conn)
        exit("Connection Failed: " . $conn);
    
    $query="INSERT INTO users(uid,pass,fname,lname,pmm) VALUES('$username','$password','$fname','$lname',$pmm)";
    $rs=odbc_exec($conn,$query);

这个查询给了我这个错误

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression., SQL state 22005 in SQLExecDirect in C:\Program Files\Easyphp-5.3.6.0\www\mobshop\registered.php on line 39

..请提出解决方案

注意:pmm 是一个数字字段,这就是为什么我没有把它放在引号中。

【问题讨论】:

需要表格结构才能准确回答这个问题。 【参考方案1】:

“数据类型不匹配”表示您试图在您的一个变量中为您的第一组括号中列出的字段之一传递不正确的数据类型。

尝试使用 echo 将 $query 写入屏幕,然后获取该结果并在您的 MS Access 数据库查询设计器中运行它(假设您有 MS Access 软件)。

【讨论】:

【参考方案2】:

而不是这个

$query="INSERT INTO users(uid,pass,fname,lname,pmm) VALUES('$username','$password','$fname','$lname',$pmm)";

试试这个

$query="INSERT INTO users(uid,pass,fname,lname,pmm) VALUES('$username','$password','$fname','$lname','$pmm')";

您只是忘记了 $pmm 字段中的单引号。请记住,如果您使用的是 ODBC,请注意数据类型。

如果该值将是一个整数,那么像这样对值进行类型转换 $id = (int) $id;

如果 Datatype 不是 Integer 则必须加上单引号

【讨论】:

以上是关于使用通过 ODBC 访问的条件表达式中的数据类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Excel ODBC SQL 语句抛出错误'[ODBC EXCEL 驱动程序] 条件中的数据类型不匹配

条件表达式访问中的查询数据类型不匹配

ms 访问 2007 更新错误运行时错误 3464,条件表达式中的数据类型不匹配

条件表达式中的数据类型不匹配

标准表达式中的数据类型不匹配(vb.net,访问)

[转]ODBC编程指南