นำค่าตัวแปรที่ต่อกันเป็นคำสั่ง sql มาคิวรี่ไม่ได้
Code (PHP)
<?php
mysql_connect('localhost', 'root', '1234') or die("conn");
mysql_select_db("ctt") or die("select");
mysql_query("set NAMES utf8");
function create_tb_stu($stu){
$day = array(1=>"m", "tu", "w", "th", "f");
$cou = array(1=>"cou varchar(50)", "cla varchar(50)", "tea varchar(30)");
$a .= "CREATE TABLE stu" . $stu . " (";
$a .= "<br>";
$a .= "id int(12) NOT NULL,";
$a .= "<br>";
for($i=1; $i<6; $i++){
for($j=1; $j<4; $j++){
for($k=1; $k<11; $k++){
$a .= "stu" . "_" . $day[$i] . "_" . $k . $cou[$j] . " default NULL,<br>";
}
}
}
$a .= "PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
mysql_query($a) or die("sql");
}
$stu = "5"; //เป็นค่าที่ส่งไปประมวลผล เพื่อสร้างเทเบิล
create_tb_stu($stu);
?>
จากโค้ดข้างบน ผมให้มันสร้าง คำสั่ง sql สำหรับไปคิวรี่
แต่มันคิวรี่ไม่ได้อ่ะครับ
กลับกัน หากผมไม่สั่งคิวรี่ แต่สั่งให้มัน โชว์ $a แล้วผมเอาค่าที่ได้ไปคิวรี่เอง ใน appserv
มันกลับได้ครับ ช่วยหาสาเหตุ และวิธีแก้หน่อยครับ
ด้านล่างเป็นผลลัพท์ คำสั่งที่ได้บางส่วนนะครับ ถ้าสั่งให้ echo $a;
CREATE TABLE stu5 (
id int(12) NOT NULL,
stu_m_1cou varchar(50) default NULL,
stu_m_2cou varchar(50) default NULL,
stu_m_3cou varchar(50) default NULL,
stu_m_4cou varchar(50) default NULL,
stu_m_5cou varchar(50) default NULL,
stu_m_6cou varchar(50) default NULL,
stu_m_7cou varchar(50) default NULL,
stu_m_8cou varchar(50) default NULL,
stu_m_9cou varchar(50) default NULL,
stu_m_10cou varchar(50) default NULL,
PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;Tag : PHP, MySQL
ประวัติการแก้ไข 2011-04-24 20:16:49 2011-04-24 20:20:11
Date :
2011-04-24 20:07:44
By :
ja_14436
View :
1316
Reply :
4
Code (PHP)
mysql_query($a) or die(mysql_error());
ลองแบบนี้ดูครับ
Date :
2011-04-24 20:38:07
By :
webmaster
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 '
id int(12) NOT NULL,
stu_m_1cou varchar(50) default NULL,
stu_m_2cou v' at line 1
ขึ้นแบบนี้อ่ะครับ
Date :
2011-04-24 20:42:21
By :
ja_14436
จาก Error ก็บอกได้แล้วน่ะครับ
Date :
2011-04-24 20:55:32
By :
webmaster
ได้แล้วครับ เกิดจากโค้ด <br> ที่เข้าไปแทรกในคำสั่ง sql น่ะครับ
มิน่า เวลาคิวรี่แล้วไม่ผ่าน เพราะมันเอา <br> เข้าไปอยู่ในโค้ดด้วย
แต่พอให้ echo $a; มาดู แล้วไปคิวรี่ใน Appserv โดยตรงทำได้ เพราะ โค้ดไม่ติด <br> มา (มันกลายเป็นขึ้นบรรทัดใหม่)
ขอบคุณพี่วิืนครับ
Date :
2011-04-24 21:34:48
By :
ja_14436
Load balance : Server 00