ไม่เข้าใจเรื่อง error ค่ะ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

nupha45
PHP Jr. Member
PHP Jr. Member
Posts: 13
Joined: 13/08/2008 7:59 pm

ไม่เข้าใจเรื่อง error ค่ะ

Post by nupha45 » 24/09/2008 7:33 am

คือจะตรวจสอบว่าใน Database มีข้อมูล อยู่แล้วรึเปล่าถ้าไม่มีค่อย insert เข้าไป
ทีนี้ข้อมูลที่จะ insert ดึงมาจาก xml file อีกทีนึงค่ะ จะเก็บลง tablename ซึ่งมีแค่ 4 field โดยที่ ฟิวที่1-4 จะซ้ำกันได้ เลยไม่ได้กำหนด primarykey ค่ะ


$check=$sid.$name.$ua.$series; //เป็นข้อมูลที่ดึงมาหมดแล้วเอามาต่อกันใส่ในตัวแปรเดียวเลย
$SQL ="select * from tablename where concat(id,name,ua,series)='$check'";
echo $SQL; //ลองechoค่าออกมาดูว่าถูกต้องรึเปล่า
$result = mysql_query($SQL)or die(mysql_error());
$numrow = mysql_num_row($result);
if(!$numrow){
$strsql = "INSERT INTO tablename (id,name,ua,series)VALUES('$sid','$name','$ua','$series')";
$result = mysql_query($strsql,$mysqlh)or die("ไม่สามารถเพิ่มข้อมูลลงสู่ตาราง ได้<br>".mysql_error());
}

เอาแค่หลักการมันน่าจะถูกต้องแล้วนี่นา แต่พอรันดูปรากฎว่า

select * from gmmmobile_phonesupport where concat(id,name,ua,series)='14ARIMAArima-271x271'
Fatal error: Call to undefined function mysql_num_row() in /www/upload.php on line 109


ก็เลยลองเปลี่ยน code ตรง $sql มาเป็น

$check=$sid.$name.$ua.$series; //เป็นข้อมูลที่ดึงมาหมดแล้วเอามาต่อกันใส่ในตัวแปรเดียวเลย
$SQL ="select * from gmmmobile_phonesupport where id='$sid',name='$name',ua='$ua',series='$series'";
echo $SQL; //ลองechoค่าออกมาดูว่าถูกต้องรึเปล่า
$result = mysql_query($SQL)or die(mysql_error());
$numrow = mysql_num_row($result);
if(!$numrow){
$strsql = "INSERT INTO tablename (id,name,ua,series)VALUES('$sid','$name','$ua','$series')";
$result = mysql_query($strsql,$mysqlh)or die("ไม่สามารถเพิ่มข้อมูลลงสู่ตาราง ได้<br>".mysql_error());
}

แต่พอรันดูปรากฎว่า
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'name='ARIMA',ua='Arima-271x',series='271'' at line 1

เลยอยากจะถามว่าเราเขียน SQL ผิดรึเปล่าคะ แล้ว error ทั้งสองหมายความว่าอย่างไรคะ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22237
Joined: 22/09/2008 6:18 pm
Contact:

Re: ไม่เข้าใจเรื่อง error ค่ะ

Post by mindphp » 24/09/2008 7:46 am

แบบ แรก ไม่มี function mysql_num_row php มี mysql_num_rows() ครับ
แบบ ที่สอง เขียน คำสั่ง sql ผิด รูปแบบครับ
ต้องใช้ OR หรือ AND แทน , ขึ้นอยู่กับค่าที่ต้องการ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

nupha45
PHP Jr. Member
PHP Jr. Member
Posts: 13
Joined: 13/08/2008 7:59 pm

Re: ไม่เข้าใจเรื่อง error ค่ะ

Post by nupha45 » 24/09/2008 4:28 pm

ขอบคุณมากๆค่ะ

(หึหึ อยากบอกว่าตัวเราน่าจะดูให้ดีก่อนว่าตัวเองเขียน function ผิด ลืม s ไปได้ยังไง)

ไหนๆก็ถามแล้ว ขอถามไว้เป็นความรู้หน่อยนึงนะคะ
คือจาก code ด้านบน

พอเรา insert ข้อมูลลงไปใน Database แล้ว เราจะเก็บข้อมูลตัวที่เรา Insert ไว้ในตัวแปร array แบบนี้
$id_check[$a]=$sid.$name.$ua.$series;
$a++;
จากนั้นพอ วนรอบครบแล้วก็สั่งให้ดึงข้อมูล เก่า ที่มีอยู่ในฐานข้อมูลอยู่แล้ว ขึ้นมาแสดงอย่างเดียว
ดังนั้น เราเข้าใจว่า น่าจะดึงข้อมูลที่ไม่อยู่ใน $id_check[$a] เลยเขียนออกมาแบบนี้
$num=0;
while($num<$a){
$check= ' concat(id,name,ua,series)!='.$id_check[$num];
$check2=$check2.$check;
$num++;
if($num<$a){
$check2=$check2.' and';
}
}
$sql1="SELECT * FROM tablename where $check2 ";
$query1 = mysql_query($sql1);
$numrow = mysql_num_rows($query1);

คราวนี้ก็ขึ้น error $numrow = mysql_num_rows($query1); อีกเช่นกัน
เลยอยากจะทราบว่า code ที่เขียนนี้ถูกต้องรึเปล่าคะ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22237
Joined: 22/09/2008 6:18 pm
Contact:

Re: ไม่เข้าใจเรื่อง error ค่ะ

Post by mindphp » 24/09/2008 8:06 pm

ถ้าจะเอาแบบโค้ด ตามนั้น ต้อง รวม $id_check ออกมาก่อน โดยใช้ function เกี่ยวกับ array ช่วย น่าจะง่ายกว่า
string implode ( string glue, array pieces )
เป็น function ที่รวมค่าที่อยู่ใน array ให้ออกมาเป็นข้อความ.
เช่น

Code: Select all

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
 
echo $comma_separated; 
//ผลลัพธ์ lastname,email,phone
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 59 guests