มีปัญหาเวลาต้องการติดต่อฐานข้อมูล 2 ที่ในเวลาเดียวอ่ะคับ ไม่ทราบว่าต้องทำอย่างไร
คือผมเขียนโค๊ดให้มันติดต่อกับบานข้อมูล DBF ผ่าน ODBC ตอนนี้คิวรี่ข้อมูลออกมาแสดงได้ครับปกติ ดังโค๊ดต่อไปนี้
Code (PHP)
require_once('include/incODBC.php');
$strSQL = "SELECT HN,TITLE,NAME,SURNAME,ADMIT,ADMITE,TIME,WARD FROM admit ";
$strSQL .= "WHERE admit LIKE '09/11/55' AND (time BETWEEN '06:00' AND '12:00')";
$query = odbc_exec($strConn, $strSQL) or die (odbc_errormsg());
while($fetcharr = odbc_fetch_array($query))
{
$HN = $fetcharr['HN'];
$Title = $fetcharr['TITLE'];
$Name = $fetcharr['NAME'];
$Lastname = $fetcharr['SURNAME'];
$Admit = $fetcharr['ADMIT'];
$Admite = $fetcharr['ADMITE'];
$Time = $fetcharr['TIME'];
$Ward = $fetcharr['WARD'];
}
ลอง echo ดูมีค่าถูกต้องตามที่ต้องการ แต่คราวนี้ติดปัญหาที่ว่า ในส่วนตอง while loop เมื่อผมคิวรี่ข้อมูลมาได้แล้ว ผมต้องการที่จะทำการ insert ข้อมูลนั้นลงฐานข้อมูลที่เป็น MySQL ครับโดยเขียนแบบนี้
Code (PHP)
require_once('include/incODBC.php');
require_once('include/Connectdb.php'); -> เพิมขึ้นมา
$strSQL = "SELECT HN,TITLE,NAME,SURNAME,ADMIT,ADMITE,TIME,WARD FROM admit ";
$strSQL .= "WHERE admit LIKE '09/11/55' AND (time BETWEEN '06:00' AND '12:00')";
$query = odbc_exec($strConn, $strSQL) or die (odbc_errormsg());
while($fetcharr = odbc_fetch_array($query))
{
$HN = $fetcharr['HN'];
$Title = $fetcharr['TITLE'];
$Name = $fetcharr['NAME'];
$Lastname = $fetcharr['SURNAME'];
$Admit = $fetcharr['ADMIT'];
$Admite = $fetcharr['ADMITE'];
$Time = $fetcharr['TIME'];
$Ward = $fetcharr['WARD'];
//insert dbf to mysql
$strMySQL = "INSERT INTO admit(HN,TITLE,NAME,SURNAME,ADMIT,ADMITE,TIME,WARD) ";
$strMySQL .= "VALUES('".$HN."','".$Title."','".$Name."','".$Lastname."','".$Admit."','".$Admite."'";
$strMySQL .= ",'".$Time."','".$Ward."');";
$strQuery = mysql_query($strSQL);
}
แต่ปรากฎว่าโปรแกรมไม่ยอมทำการ Insert มูลลงฐานข้อมูลให้อ่ะคับ ไม่ทราบว่าเป็นเพราะอะไรเหรอคับ รบกวนด้วยครับผม
อันนี้โค๊ดส่วนของการ Connect database MySQL ครับ
Code (PHP)
<?
define("DB_SERVER","localhost"); // database server
define("USERNAME","root"); // username
define("PASSWORD","root"); // password
define("CURRENT_DB","db_convertdbf "); // current database
$db = mysql_pconnect(DB_SERVER,USERNAME,PASSWORD);
mysql_query("SET NAMES UTF8");
?>
Tag : PHP, CakePHP, Windows
Date :
2012-11-12 14:39:12
By :
golfkub
View :
1082
Reply :
4
ถ้าไม่อยากมีปัญหาเรื่อง Connection แนะนำให้เก็บตัวแปรโดย Loop แล้วเก็บลงใน Array ก่อนครับ จากนั้นค่อยปิด Connection แรก จากนั้นเปิด Connection ที่ 2 แล้วค่อย Loop เพื่อ Insert ครับ
ลองใช้พวก array_push ในกระทู้บทความ ผมมีอยู่ครับ
Date :
2012-11-12 17:23:05
By :
mr.win
หาเจอล่ะ
Code (PHP)
$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM customer";
$objQuery = mysql_query($strSQL) or die (mysql_error());
$resultArray = array();
while($obResult = mysql_fetch_array($objQuery))
{
array_push($resultArray,$obResult);
}
mysql_close($objConnect);
Go to : php กับการนำ array_push มาเก็บค่า result ของ mysql ที่ได้จากการ query และ fetch array
Date :
2012-11-12 17:24:31
By :
mr.win
แล้วเวลาที่เราจะเอาค่าที่เก็บในอาเรย์ไปใช้ในการ Insert ทำยังไงเหรอคับ พอจะมีตัวอย่างไหมคับ
Date :
2012-11-13 15:29:58
By :
golfkub
พอจะเข้าใจแล้วคับผม อิอิ
มีปัญหาอีกอย่างนึงครับคือว่าคิวรี่ข้อมูลจาก dBase ผ่าน ODBC แล้วมันจะเจอ Error แบบนี้หมายความว่าอย่งไรคับ มันจะเป็นเฉพาะ 2 ตางที่เป็นนอกนั้นไม่เป็นคับ
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC dBase Driver] External table is not in the expected format., SQL state S1000 in SQLExecDirect in C:\AppServ\www\dBase\index.php on line 96
[Microsoft][ODBC dBase Driver] External table is not in the expected format.
Date :
2012-11-13 15:39:27
By :
golfkub
Load balance : Server 05