ตัวแปรที่ใช้คิวรี่มีค่าไม่เท่ากับในดาต้าเบสเนื่องจากการเว้นวรรค

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ตัวแปรที่ใช้คิวรี่มีค่าไม่เท่ากับในดาต้าเบสเนื่องจากการเว้นวรรค

ตัวแปรที่ใช้คิวรี่มีค่าไม่เท่ากับในดาต้าเบสเนื่องจากการเว้นวรรค
 คือมีปัญหาข้อมูลจากสองดาต้าเบส ไม่ตรงกับ
ใช้ appserv เก็บข้อมูลรายรับรายจ่าย ดาต้าเบสชื่อ account
และ ใช้  microsoft sql server เก็บข้อมูลลูกค้า ดาต้าเบสชื่อ customer 
มีตาราง ID_cus และ ID_ac ที่เหมือนกัน ที่เก็บค่าเหมือนกันอยู่
 
คิวลี่ข้อมูล ID_ac จาก account  เก็บไว้ในตัวแปร $ID_cus  เรียบร้อยใช้งานได้ แสดงผลลัพธ์ได้ปกติ
แต่ตอนนี้ต้องการใช้ข้อมูลจากดาต้าเบส customer  มาใช้งานด้วย
และจะคิวลี่ข้อมูลโดยใช้  $ID_cus ใช้เท่ากับ ID_cus ใน customer  แต่ข้อมูลแสดงแค่บางส่วน คือได้กำหนดให้ตาราง  ID_cus  เก็บได้ 8 ตัวอักษร
ข้อมูลที่มีค่าเท่ากับ 8 ตัวอักษรก็แสดงตามปกติ
แต่มีปัญหาที่ ข้อมูลที่มีจำนวน 1-7 อักษรไม่แสดง
เพราะ ID_cus ใน customer มีการเว้นวรรค
เช่น  ค่า  $ID_cus  ที่คิวลี่จาก  account เป็น  $ID_cus = '12345678' ใน customer   จะเป็น '12345678' (8ตัวเหมือนกันแสดงผลลัพธ์ได้ปกติ)
และ $ID_cus = '3032222' ใน customer   จะเป็น ' 3032222'  (วรรคข้างหน้าไป1)
และ $ID_cus = '236987' ใน customer   จะเป็น '  236987'   (วรรคข้างหน้าไป2)
และ $ID_cus = '14523'   ใน customer   จะเป็น '   14523' (วรรคข้างหน้าไป3)
และ $ID_cus = '2587'     ใน customer   จะเป็น '    2587' (วรรคข้างหน้าไป4)
และ $ID_cus = '256'       ใน customer   จะเป็น '     256' (วรรคข้างหน้าไป5)
และ $ID_cus = '21'         ใน customer   จะเป็น '       21' (วรรคข้างหน้าไป6)
และ $ID_cus = '1'           ใน customer   จะเป็น '        1' (วรรคข้างหน้าไป7)

มีวิธีไหนบ้างคะทำให้วรรคหายไป หรือต้องเพิ่มค่าใน $ID_cus  ให้มีการเว้นวรรคเท่ากัน ช่วยแนะนำหน่อยคะ cryingcrying
 
 


Aun 183.89.94.xxx 19-03-2015 20:42:59

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ไม่ค่อยเข้าใจว่าหมายถึงส่วนใหน ส่วนของการ query หรือ การนำมาแสดง
ใช้เป็น การตัดช่องว่างได้ไหม ถ้า php ก็ trim() หรือ mysql ก็ฟังก์ชั่น trim() เหมือนกัน  


ninenik 1.46.12.xxx 19-03-2015
 ความคิดเห็นที่ 2
คือตัวอย่างนะคะ 
select * from 
customer where ID_ac =  '$ID_cus' ;

แต่ข้อมูลไม่แสดงผลเพราะ 
$ID_cus มีค่าเท่ากับ '1234'
แต่ข้อมูลในตาราง 
ID_ac  เก็บค่าเป็น '    1234' คะ

(ใช้ 
trim , rtrim ,ltrim แล้ว ไม่ได้คะ


Aun 183.89.94.xxx 19-03-2015 22:11
 ความคิดเห็นที่ 3
ข้อมูลมีอักขระพิเศษอื่น ที่แทรกอยู่หรือเปล่า ลองเทียบโดยใช้ md5 เข้ารหัสค่าดู ว่ามีค่าเหมือนกันไหม
บางทีข้อสันนิฐานอาจจะเป็นตอนเรา คิวรี่ค่ามาบันทึกไว้ ติดค่าอื่นมาด้วยหรือเปล่า เช่น
ลอง SELECT ID_acc FROM customer WHERE ID_acc='3032222''
พอคิวรีเสร็จเอาค่ามาเข้ารหัสเทียบดูว่า
สมมติได้

$rs['ID_acc']

ก็ใช้คำสั่ง
echo md5(trim($rs['ID_acc']));

และก็อีกคำสั่ง ลอง ค่าตายตัว

echo md5(3032222);

ถ้าค่าข้อมูลที่เข้ารหัสทั้งสองไม่เหมือนกัน แสดงว่า ในขึ้นตอนการคิวรี่บันทึกค่า มีอักขระหรือสัญลักษณ์พิเศษ
ถูกแทรกเข้าไป ทำให้ค่าที่ได้ไม่เหือนกัน แ่ต่ถ้าได้ค่าเท่ากัน ก็ต้องไปไล่ดูสาเหตุอื่นต่อ


ninenik 1.46.12.xxx 19-03-2015
 ความคิดเห็นที่ 4
แล้วถ้าใช้ SUBSTR ในการselect ได้ไหมคะ คือ มันต้องตัดยังไง เพราะวรรคมันไม่เท่ากัน วรรค 1 บ้าง 2 บ้าง


Aun 183.89.94.xxx 19-03-2015 22:56
 ความคิดเห็นที่ 5

substr คงไม่น่าใช่ เพราะเห็นว่าใช้ trim rtrim ltrim แล้วไม่ได้ คงไม่ได้เป็นกับช่องว่าง น่าจะเป็นกับข้อมูล ต้อง

หาสาเหตุตามที่บอก และก็ไล่ดู บางทีอาจจะไม่มีอะไร



ninenik 1.46.12.xxx 19-03-2015
 ความคิดเห็นที่ 6
ได้ค่าต่างกันคะ


Aun 49.230.66.xxx 20-03-2015 09:47
 ความคิดเห็นที่ 7
ออ ผิดคะคะๆๆเมือกี้ค่าไม่ใส่ค่าผิดนดหน่อย ได้เหมือนกันคะ


Aun 49.230.66.xxx 20-03-2015 09:50
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ