2016-12-07 87 views
2

我有这样的代码(我取代MySQL的测试目的的变量)在MySQL的phpmyadmin &工作因而追加-1 -2 -3等的course_no:mysql的分隔符工作在MySQL,但不是在PHP

drop trigger if exists change_course_no; 

delimiter | 

CREATE TRIGGER change_course_no BEFORE INSERT ON hybrid_locked 
FOR EACH ROW BEGIN 
declare original_course_no varchar(50); 
declare course_no_counter int; 
set original_course_no = new.course_no; 
set course_no_counter = 1; 


while exists (select true from hybrid_locked where course_no = new.course_no) do 
set new.course_no = concat(original_course_no, '-', course_no_counter); 
set course_no_counter = course_no_counter + 1; 
end while; 

END; 

| 

delimiter ; 


insert into hybrid_locked (
requestor_name, academic_unit, 
instructor_name, instructor_email, tel_number, creds, more_instructors, 
course_name, program_name, term, course_no, classroom, comments, online_exam, participants, hybrid_past1, hybrid_past2, hybrid_past3, date_requested, 

main_date_start, main_date_end, main_time_start, main_time_end, 
sec_date_start, sec_date_end, sec_time_start, sec_time_end, 
unique_date1, unique_date1_time_start, unique_date1_time_end, 
unique_date2, unique_date2_time_start, unique_date2_time_end 
) 

values ('Smith', 'test', 
'Joe', '[email protected]', '555-555-5555', 'no', '', 
'Physics', '', 'summer', 'TEST101', '1025', '', 'yes', '10', 
'unsure', 'unsure', 'unsure', '2016-12-05', 

'2016-12-06', '2016-12-29', '17:45:00', '19:45:00', 
'0000-00-00', '0000-00-00', '00:00:00', '00:00:00', 
'0000-00-00', '00:00:00', '00:00:00', 
'0000-00-00', '00:00:00', '00:00:00' 
); 

但是,当我把它添加到我的PHP脚本失败,出现错误:

您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以找到在'delimiter |附近使用的正确语法CREATE TRIGGER change_course_no BEFORE INSERT ON的3号线

这是在PHP形式的代码hybrid_locked FO”:

$query_hybrid = 

" 
drop trigger if exists change_course_no; 

delimiter | 

CREATE TRIGGER change_course_no BEFORE INSERT ON hybrid_locked 
FOR EACH ROW BEGIN 
declare original_course_no varchar(50); 
declare course_no_counter int; 
set original_course_no = new.course_no; 
set course_no_counter = 1; 


while exists (select true from hybrid_locked where course_no = new.course_no) do 
set new.course_no = concat(original_course_no, '-', course_no_counter); 
set course_no_counter = course_no_counter + 1; 
end while; 

END; 

| 

delimiter ; 


insert into hybrid_locked (
requestor_name, academic_unit, 
instructor_name, instructor_email, tel_number, creds, more_instructors, 
course_name, program_name, term, course_no, classroom, comments, online_exam, participants, hybrid_past1, hybrid_past2, hybrid_past3, date_requested, 

main_date_start, main_date_end, main_time_start, main_time_end, 
sec_date_start, sec_date_end, sec_time_start, sec_time_end, 
unique_date1, unique_date1_time_start, unique_date1_time_end, 
unique_date2, unique_date2_time_start, unique_date2_time_end 
) 

values ('$requestor_name', '$academic_unit', 
'$instructor_name', '$instructor_email', '$tel_number', '$creds', '$more_instructors', '$course_name', '$program_name', '$term', '$course_no', '$classroom', '$comments', '$online_exam', '$participants', '$hybrid_past1', '$hybrid_past2', '$hybrid_past3', '$date_requested', 

'$main_date_start', '$main_date_end', '$main_time_start', '$main_time_end', 
'$sec_date_start', '$sec_date_end', '$sec_time_start', '$sec_time_end', 
'$unique_date1', '$unique_date1_time_start', '$unique_date1_time_end', 
'$unique_date2', '$unique_date2_time_start', '$unique_date2_time_end' 
)"; 

我不明白我失踪的PHP脚本?

谢谢, 克里斯

回答

1

你可能根本不应该从内PHP反正这样做,但如果你这样做,你应该用什么mysqli_multi_query

bool mysqli_multi_query (mysqli $link , string $query) Executes one or multiple queries which are concatenated by a semicolon.

其他方法不允许你在一个API调用中执行多个查询。

+0

我不能只支持mysql_ *您是通过继续使用它做自己一个巨大的损害的服务器上这个当前服务器上使用的mysqli不幸 – PAPADOC

+0

好,如果你是。 – e4c5

+0

很高兴得到了帮助 – e4c5