Warning: odbc_exec(): SQL error: [unixODBC][IBM][Controlador ODBC de iSeries Access][DB2 UDB]SQL0104 - Texto de mensaje de error no disponible. El mensaje no se puede traducir satisfactoriamente., SQL state 37000 in SQLExecDirect in /srv/www/htdocs/tipoCambio.php on line 44 Error en odbc_exec
I know the query has a non english character so I guess it is an encoding problem. I've use mb_convert_encoding function to solve it but it was a no go. I also uncoment the AddDefaultCharset On under httpd.conf and add it to the .htaccess file in /srv/www/htdocs to no avail.
The scripts works ok through command line (php /srv/www/htdocs(tipoCambio.php) and under IIS7.
Database is IBM DB2 and I access it through unixODBC.
It appears that you may want to enclose the column names in `backticks` -- the Latin1 Character Set works fine.
<?php // RAY_temp_panchux.phperror_reporting(E_ALL);// TEST NON-ENGLISH CHARACTERS IN COLUMN NAMES IN MySQL// IMPORTANT PAGES FROM THE MANUALS// MAN PAGE: http://us2.php.net/manual/en/ref.mysql.php// MAN PAGE: http://us2.php.net/manual/en/mysql.installation.php// CONNECTION AND SELECTION VARIABLES FOR THE DATABASE$db_host = "localhost"; // PROBABLY THIS IS OK$db_name = "??"; // GET THESE FROM YOUR HOSTING COMPANY$db_user = "??";$db_word = "??";// OPEN A CONNECTION TO THE DATA BASE SERVER// MAN PAGE: http://us2.php.net/manual/en/function.mysql-connect.phpif (!$db_connection = mysql_connect("$db_host", "$db_user", "$db_word")){ $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>NO DB CONNECTION: "; echo "<br/> $errmsg <br/>";}// SELECT THE MYSQL DATA BASE// MAN PAGE: http://us2.php.net/manual/en/function.mysql-select-db.phpif (!$db_sel = mysql_select_db($db_name, $db_connection)){ $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>NO DB SELECTION: "; echo "<br/> $errmsg <br/>"; die('NO DATA BASE');}// IF WE GOT THIS FAR WE CAN DO QUERIES// WANT TO RUN A QUERY LIKE THIS:// DIVISA WHERE AÑO=11 AND MES=2 AND DIA=28// CREATING THE TABLE$sql = "CREATE TEMPORARY TABLE divisa ( AÑO INT NOT NULL DEFAULT 0, MES INT NOT NULL DEFAULT 0, DIA INT NOT NULL DEFAULT 0 )";if (!$res = mysql_query($sql)){ // MAN PAGE: http://us.php.net/manual/en/function.mysql-error.php $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>QUERY FAIL: "; echo "<br/>$sql <br/>"; die($errmsg);}// INSERT SOME DATA$sql = "INSERT INTO divisa ( AÑO, MES, DIA ) VALUES ( 11, 2, 28 )";if (!$res = mysql_query($sql)){ // MAN PAGE: http://us.php.net/manual/en/function.mysql-error.php $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>QUERY FAIL: "; echo "<br/>$sql <br/>"; die($errmsg);}$sql = "INSERT INTO divisa ( AÑO, MES, DIA ) VALUES ( 11, 2, 28 )";if (!$res = mysql_query($sql)){ // MAN PAGE: http://us.php.net/manual/en/function.mysql-error.php $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>QUERY FAIL: "; echo "<br/>$sql <br/>"; die($errmsg);}// QUERY TO FIND THE DATA WE JUST INSERTED$sql = "SELECT * FROM divisa WHERE AÑO=11 AND MES=2 AND DIA=28";if (!$res = mysql_query($sql)){ // MAN PAGE: http://us.php.net/manual/en/function.mysql-error.php $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>QUERY FAIL: "; echo "<br/>$sql <br/>"; die($errmsg);}$num = mysql_num_rows($res);echo "<br/>$num ROWS FOUND";// SHOW THE VALUES FOR THIS TABLE$sql = "SHOW CREATE TABLE divisa";if (!$res = mysql_query($sql)){ $errmsg = mysql_errno() . ' ' . mysql_error(); echo "<br/>QUERY FAIL: "; echo "<br/>$sql <br/>"; die($errmsg);}while ($show_creates = mysql_fetch_assoc($res)){ $my_creates[] = $show_creates["Create Table"];}var_dump($my_creates);
Glad you've got a working solution. Please post your solution and accept it as the answer. That way it will get into the PAQ and others can benefit from your research.
Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.
http://www.laprbass.com/RAY_temp_panchux.php
It appears that you may want to enclose the column names in `backticks` -- the Latin1 Character Set works fine.
Open in new window