Несоответствие типа данных в выражении критериев при использовании доступа через ODBC

#php #ms-access #odbc

#php #ms-access #odbc

Вопрос:

 $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 FilesEasyPHP-5.3.6.0wwwmobshopregistered.php on line 39

.. пожалуйста, предложите решение

ПРИМЕЧАНИЕ: pmm — это числовое поле, поэтому я не заключил его в кавычки.

Комментарии:

1. Нужна структура таблицы, чтобы иметь возможность точно отвечать на эти вопросы.

Ответ №1:

«Несоответствие типа данных» указывает, что вы пытаетесь передать неправильный тип данных в одной из ваших переменных для одного из полей, перечисленных в вашем первом наборе круглых скобок.

Попробуйте записать $ query на экран с помощью echo, а затем возьмите этот результат и запустите его в вашем конструкторе запросов к базе данных 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;

Если тип данных не является целым числом, вы должны заключить его в одинарные кавычки