[英]PHP MySQL CREATE TABLE
我正在嘗試使用PHP,PDO和MySQL創建一個表。 為了我的應用程序的需要,表的名稱必須是一個變量。
這是我的代碼:
$request = $pdo->prepare("CREATE TABLE IF NOT EXISTS :table (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` bigint(20) unsigned NOT NULL,
`position` bigint(20) unsigned NOT NULL,
`left` bigint(20) unsigned NOT NULL,
`right` bigint(20) unsigned NOT NULL,
`level` bigint(20) unsigned NOT NULL,
`title` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;");
$request->execute(array(
'table'=>$uuid));
我不能在MySQL語句中使用“:table”嗎? 目前我寫道:
[...]
CREATE TABLE IF NOT EXISTS `$uuid`
[...]
這可行,但對我來說聽起來很奇怪^^'這是解決我的問題的唯一方法嗎?
您不能將表名作為參數傳遞。 如果要使用變量名創建表,則必須使用動態查詢。
$pdo->query("CREATE TABLE IF NOT EXISTS userfiles (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int unsigned NOT NULL,
`parent_id` bigint(20) unsigned NOT NULL,
`position` bigint(20) unsigned NOT NULL,
`left` bigint(20) unsigned NOT NULL,
`right` bigint(20) unsigned NOT NULL,
`level` bigint(20) unsigned NOT NULL,
`title` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8");
這是處理此類情況的唯一正確方法。
這樣的事情是非常基本的事情。
您當前的設置就像是一輛裝有方形車輪的汽車。
盡管時間緊缺,但您仍必須使其成為單個表。
否則,您將浪費大量時間,並且最終會經過無數痛苦而最終轉向正確的設計
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.