2016-01-14 132 views
1

我試圖在每次發佈此方法時創建新表,但出於某種原因,我無法弄清楚它爲何會死亡。mysql每次嘗試創建新表時都會死亡

<?php 

$host = "127.0.0.1"; 
$username = 'cotten3128'; 
$pwd = 'pwd'; 
$database = "student_cotten3128"; 
$pin = $_REQUEST['pinSent']; 
$words = $_REQUEST['resultSent']; 
$tableName = $pin; 
$db = new mysqli($host, $username, $pwd, $database); 
if ($sql = $db->prepare("CREATE TABLE $pin (id INT(11) AUTO_INCREMENT);")) { 
$sql->execute(); 
$sql->close(); 
}else{ 
echo $mysql->error; 
die('Could not create table'); 
} 
for($i=0;$i<count($words);$i++){ 
    if($sql = $db->prepare("INSERT INTO ".$pin.$words[$i].";")) { 
$sql->execute(); 
$sql->close(); 
}else{ 
    echo $mysql->error; 
    die("Could not add data to table"); 
} 
} 


mysqli_close(); 
?> 

任何幫助或見解將不勝感激。

+1

你有沒有考慮過* actual *錯誤?你也使用'mysql_close',它不會與'mysqli_ *'函數一起工作。 –

+0

你收到什麼信息? '錯誤創建表'或'錯誤輸入'字? –

+1

我不知道'$ pin。$ words [i]'中有什麼,但是你的CREATE語句是錯誤的,你沒有爲你的屬性'id'提供一個數據類型和範圍,你的表名'$ pin'不應該用引號包裹。所以,你的準備語句應該是這樣的:'if($ sql = $ db-> prepare(「CREATE TABLE $ pin(id INT(11)AUTO_INCREMENT);」)){...}「 –

回答

0

我的文章的目的是幫助你自己找到問題。由於您沒有添加太多信息,我認爲我的帖子對您​​有所幫助。

根據您分享的代碼,我想您的意思是您的一個被調用die()函數被執行。

錯誤的函數調用

至於周杰倫Blancherd提到mysql_close是錯誤的函數。您必須在創建mysqli實例時使用mysqli_close

除此之外,mysql_*已棄用,不應再使用。


調試步驟

不僅針對這種情況,但總的來說,你應該問自己:

  • 有一個錯誤信息可用? (前端輸出,錯誤日誌文件,...)

YES:

  • 關於什麼的消息?
  • 這是您可以搜索的錯誤嗎?例如。通過搜索引擎或相應的文檔?
  • 查找錯誤跟蹤器(如果可用),由您正在使用的軟件的軟件開發人員查看,如果尚未報告,則報告問題。

NO:(如果沒有錯誤消息可用或者無法搜索,因爲它是一個自定義錯誤消息)

  • 搜索您正在使用的錯誤消息,並啓動該軟件的文件一個核心調試。

還是無解?:

  • 向上stackoverflow.com例如並告訴你的問題和你已經執行的步驟來找到並修復錯誤。根據需要只發布儘可能多的代碼,並使用適當的格式。

調試你的情況:

爲了縮小範圍。 die()中哪一個被執行?取決於該查詢在實際執行之前執行的回顯。然後將SQL查詢複製到SQL編輯器並查看它的語法。之後,你可能已經知道這個問題了。

相關問題