2016-05-27 4 views
0

Я пытался обновить свои данные в соответствии с пользовательским сеансом (UserLogin), но он продолжал говорить: несоответствие типов данных в выражении критериев. print_r предназначен только для тестирования.SQL + PHP Update query

Спасибо заранее,

Z

function Employee1_BeforeShow(& $sender) 
{ 
    $Employee1_BeforeShow = true; 
    $Component = & $sender; 
    $Container = & CCGetParentContainer($sender); 
    global $Employee1; //Compatibility 


$Page = CCGetParentPage($sender); 

$db = $Page->Connections["PettyCashMDB"]; 

$sql1 = "UPDATE Employee SET Employee.LastActive = Date() WHERE Employee.[EmpID] = ". $_SESSION['UserLogin']; 
$db->query($sql1); 

print_r($_SESSION['UserLogin']); 



$db->close(); 
Employee1_BeforeShow @67-67106FAD 
return $Employee1_BeforeShow; 
} 

EDIT: Я попробовал метод @NanaPartykar «s и случайно я заметил, что он действительно получает значение из $_SESSION['UserLogin'], только что-то тип данных отличается.

EDIT: отображает ошибку Data type mismatch, но оба они являются строками и возвращают строку.

+0

- тип UserLogin такой же, как ваш тип данных поля EmpID в БД? – apomene

+0

проверить, где предложение в вашем sql-запросе, type are differents –

+0

Я думаю, что это строка, а другая - int, попробуйте преобразовать $ _SESSION ['UserLogin'] –

ответ

0

Наконец-то он получил работу, это код $sql1 = "UPDATE Employee SET LastActive = Date() WHERE EmpID = '$_SESSION[UserLogin]' "; Спасибо всем, кто помог.

0

Вместо Employee.[EmpID] используйте Employee.EmpID

+0

оба принимаются с помощью Codecharge, поэтому он по-прежнему показывает ту же ошибку «Несоответствие Datatype», спасибо. –

0

Вам нужно несколько цитат:

$sql1 = "UPDATE Employee SET Employee.LastActive = Date() WHERE Employee.[EmpID] = \'". $_SESSION['UserLogin'] . "\'"; 
+0

Спасибо за ответ, он отображает 'Parse error: синтаксическая ошибка, неожиданная '' '' '(T_CONSTANT_ENCAPSED_STRING)'. @Gustav –

+0

К сожалению, вам нужно избегать этих одиночных кавычек. См. Править. – Gustav

+0

все еще не работает :( –

0

Z - Есть куча встроенных функций CodeCharge, чтобы помочь с получением значений из строки запроса, сессий и управления.

например: CCGetSession («UserLogin», «default»);

http://docs.codecharge.com/studio50/html/index.html?http://docs.codecharge.com/studio50/html/Components/Functions/PHP/Overview.html

и выполнение SQL с некоторыми валидирующими (от 'Execute пользовательского SQL' раздела справки):

$db = new clsDBConnection1(); 
$SQL = "INSERT INTO report (report_task_id,report_creator) ". 
    "VALUES (". $db->ToSQL(CCGetFromGet("task_id",0),ccsInteger) .",". $db->ToSQL(CCGetUserID(),ccsInteger) .")"; 

$db->query($SQL); 
$db->close(); 

в $ db-> ToSQL (и CCToSQL) функция преобразования и добавить кавычки для соответствующего типы данных (ccsText, ccsDate).

Есть много примеров в Руководстве по «Примеры» и «Справочник по программированию» для PHP (и ASP, .NET и т.д.)

http://support.codecharge.com/tutorials.asp

Я настоятельно рекомендую взглянуть на некоторые из примеров, поскольку Codecharge будет обрабатывать много «сантехники» и добавление большого количества настраиваемого кода вызовет проблемы с генерацией кода. В вашем примере вы должны добавить действие «Пользовательский код» к событию «Перед показом» записи и добавить там свой код. Если вы добавите код где угодно, весь раздел кода (например, Before Show) изменит цвет и больше не будет обновлен, если вы что-то измените.

Например, если вы изменили значение параметра «Обновить», чтобы изменить значение по умолчанию, то никакие изменения в IDE/Properties не изменят функцию «Обновить» (например, добавление нового поля в запись).

+0

спасибо за ответ, я в настоящее время использую перед показом, пользовательский код, как вы упомянули, но проблема заключается не в том, что он может 't получить значение, но тип данных, это ошибка, которая вызывает появление ошибки SQL: [Microsoft] [ODBC Microsoft Access Driver] Несоответствие типа данных в выражении критериев., состояние SQL 22005 в SQLExecDirect ' И для некоторыхпричина, по которой я не могу получить доступ к сайту с кодом + **, не работает ** –