· 7 years ago · Nov 15, 2018, 01:34 PM
1DROP PROCEDURE IF EXISTS `setNewCategoryUrlTag`//
2
3CREATE PROCEDURE `setNewCategoryUrlTag`(
4 IN _id INT,
5 IN _urlid VARCHAR(150),
6 IN _tablename VARCHAR(100)
7)
8BEGIN
9 UPDATE _tablename SET urlid=_urlid WHERE ID=_id;
10END//
11
12PDOStatement::execute(): SQLSTATE[42S02]: Base table or view not found: 1146 Table '_tablename' doesn't exist in
13
14DROP PROCEDURE IF EXISTS `setNewCategoryUrlTag`//
15
16CREATE PROCEDURE `setNewCategoryUrlTag`(
17 IN _id INT,
18 IN _urlid VARCHAR(150),
19 IN _tablename VARCHAR(100)
20)
21BEGIN
22 set @query = CONCAT('UPDATE ',_tablename,' SET urlid=',_urlid,' WHERE ID=',_id,';');
23 PREPARE stmt FROM @query;
24 EXECUTE stmt;
25 DEALLOCATE PREPARE stmt;
26END//
27
28PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown 'home' column in 'field list' in
29
30public function dataInsert($category){
31 $procedure = "Call setNewCategoryUrlTag(?,?,?)";
32 $statement -> bindParam(1, $category['id']);
33 $statement -> bindParam(2, $category['urlid']);
34 $statement -> bindParam(3, $category['tableName']);
35 $statement -> execute();
36 echo $category['id']."t".$category['urlid']."t".$category['tableName'];
37}
38
39DROP PROCEDURE IF EXISTS `setNewCategoryUrlTag`//
40CREATE PROCEDURE `setNewCategoryUrlTag`(
41 IN _id INT,
42 IN _urlid VARCHAR(150),
43 IN _tablename VARCHAR(100)
44)
45BEGIN
46 set @t = _tablename;
47 set @var1 = _urlid;
48 set @var2 = _id;
49 set @query = CONCAT('UPDATE ',@t,' SET urlid=',@var1,' WHERE ID=',@var2,';');
50 PREPARE stmt FROM @query;
51 EXECUTE stmt;
52 DEALLOCATE PREPARE stmt;
53END//
54
55set @query = CONCAT('UPDATE ',_tablename,' SET urlid=',_urlid,' WHERE ID=',_id,';');
56
57CONCAT('UPDATE foo SET urlid=home WHERE ID=42);
58 ^^^^
59
60set @query = CONCAT('UPDATE ',_tablename,' SET urlid='',_urlid,'' WHERE ID=',_id,';');
61 ^^---------^^