2016-02-19 167 views
1

我有以下代碼應該從前一頁收集填充值並將它們插入到MySQLi數據庫中。這不起作用,我只收到一個空白頁面,沒有任何消息。我無法弄清楚我做錯了什麼。代碼不會插入到數據庫

<?php 
 
ini_set('display_errors',1); 
 
error_reporting(E_ALL); 
 

 
if(mysqli_connect_errno()) 
 
{ 
 
    echo mysqli_connect_error(); 
 
} 
 

 
$company_name = $_POST['company_name']; 
 
$description = $_POST['description']; 
 
$welcome_text = $_POST['welcome_text']; 
 
$thanks_message = $_POST['thanks_message']; 
 
$image = addslashes (file_get_contents($_FILES['image']['tmp_name'])); 
 
$logo = getimagesize($_FILES['image']['tmp_name']); 
 

 
$image_type = $logo['mime']; 
 

 
$q = "INSERT INTO project VALUES('','$company_name','$description','$image','$image_type','$welcome_text','$thanks_message')"; 
 

 
$r = mysqli_query($mysqli,$q); 
 
if($r) 
 
{ 
 
    echo "<h1>Projektet är skapat!</h1><br> 
 
     Tryck på knappen nedan för att ta dig till Dashboard.<br><br> 
 
     <a href='dashboardadmin.php'><button id='projectbutton'>Dashboard</button></a>"; 
 
} 
 
else 
 
{ 
 
    echo mysqli_errno($mysqli) . ": " . mysqli_error($mysqli) . "\n"; 
 
} 
 
?>

+1

錯誤????????? PLZ? – devpro

+2

你至少需要「清理」你的輸入;參數化查詢會更好。 – Uueerdo

+3

[您的腳本存在SQL注入攻擊的風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)瞭解[prepared](http: //en.wikipedia.org/wiki/Prepared_statement)[MySQLi]的聲明(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –

回答

3

INSERT的正確的語法是:

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); 

請先嚐試你的價值才進入列名。還請檢查您的$_POST值,是否有$_FILES['image']可用並確認您的mysqli連接。

編輯:

是第一值(空單),你的主鍵?如果是這樣,你可以在代碼中省略那一點,然後再試一次嗎? (假設PID爲整數,自動遞增值。)

INSERT INTO project (project_name, description, image, image_type, welcome_text, thanks_message) VALUES('$company_name','$description','$image','$image_type','$welcome_text',‌​'$thanks_message') 

不知怎的,我不認爲這將是Azure的具體問題,根據您的評論。

你能看到日誌等任何錯誤嗎?也可以在運行之前嘗試回顯查詢,並檢查是否直接在您的phpmyadmin等上運行它,以查看它是否可行。

也請嘗試使用echo mysqli_errno($mysqli) . ": " . mysqli_error($mysqli) . "\n";if($r){..} else { //here }以查看是否出現錯誤。

最新:

$q = "INSERT INTO project (project_name, description, image, image_type, welcome_text, thanks_message) VALUES('".$company_name."','".$description."','".$image."','".$image_type."','".$welcome_text."','".$thanks_message."')"; 
+2

字段列表是可選的(至少在MySQL中);但我也是他們的強力支持者。 – Uueerdo

+0

@Ekin我現在把列名稱,但它不起作用。我有一個很好的連接,我已經測試沒有圖像代碼,但它仍然沒有工作。我正在使用Microsoft Azure服務器,但它不起作用,但相同的代碼在本地工作,這很奇怪。 – Max

+0

@Max是第一個值(空一)你的主鍵?如果是這樣,你可以在代碼中省略那一點,然後再試一次嗎?不知何故,我不認爲這將是Azure的具體問題。你能看到日誌等任何錯誤嗎?在你運行它之前,也請嘗試回顯查詢,並檢查你是否直接在你的phpmyadmin等上運行它,看看它是否可以工作。 – Ekin

2

試試這個,因爲你的主鍵值是自動遞增。

$q = "INSERT INTO project VALUES('$company_name','$description','$image','$image_type','$welcome_text','$thanks_message')"; 
+0

格羅什我現在試過了,但沒有奏效。我也嘗試刪除查詢,只有一個回顯將打印填充的項目名稱,以查看代碼是否收集它,並將其打印出來。所以填充的值會被檢索,但不能被執行並通過查詢發送。 – Max

+0

在你的代碼中你打開了一個到MySQL服務器的連接? –

+0

我已經包含打開到服務器的連接的文件。有沒有探頭。 – Max