2017-03-16 23 views
0

我試圖採取三個問題是或否的問題,使他們張貼到數據庫中,所以我可以在以後的日子進行趨勢分析,我公司目前已總計被JS和相吻合的Jquery揭示的結果,但我想向前邁進一步並堅持三個問題的信息,但我沒有成功我沒有收到錯誤消息,但它沒有創建條目到數據庫中。 JS仍在工作。有沒有人對我出錯的地方有任何想法?提前致謝!插入多種真假單選按鈕到MySQL

<?php 
 

 
$host="XXXXXXXX"; // Host name 
 
$username="XXX"; // Mysql username 
 
$password="XXX"; // Mysql password 
 
$db_name="XXXXXX"; // Database name 
 
$tbl_name="test_mysql"; // Table name 
 

 
// Connect to server and select database. 
 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
 
mysql_select_db("$db_name")or die("cannot select DB"); 
 

 
// Get values from form 
 
$question0=$_POST['question1']; 
 
$question1=$_POST['question2']; 
 
$question2=$_POST['question3']; 
 

 
// Insert data into mysql 
 
$sql="INSERT INTO $tbl_name(Q1, Q2, Q3)VALUES('$question0', '$question1', '$question2')"; 
 
$result=mysql_query($sql); 
 

 
?> 
 

 

 

 
    <p class="click" id="blue"> You are only charged interest on the amount that is remaining at the end of the month<br> 
 
       <input type="radio" name="question0" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question0" value="B" class="click" id="blue"> False </radio> 
 
      
 
       <p class="click" id="blue">I have to pay off the balance in full every month <br> 
 
       <input type="radio" name="question1" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question1" value="B" class="click" id="blue"> False </radio> 
 
       <p class="click" id="blue">If I don't make a payment my credit score will be unaffected<br id="blue"> 
 
       <input type="radio" name="question2" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question2" value="B" class="click" id="blue"> False </radio></p> 
 
       
 
<button type="button" class="btn btn-primary btn-xl page-scroll" onclick = "returnScore()" id="click" width="560px">Results</button>

+1

呃......你需要實際公佈這些投入對PHP的一部分做一些事情。您目前沒有向您的後端發送任何內容。不是我們至少可以看到。 – amenadiel

+1

如果您正在編寫新代碼,** _ please_不要使用'mysql_ *'函數**。它們已經老化並且破損,在PHP 5.5中已經被棄用了(這已經很舊了,它甚至不再接收安全更新),並且在PHP 7中完全刪除。使用['PDO'](https://secure.php.net/manual /en/book.pdo.php)或['mysqli_ *'](https://secure.php.net/manual/en/book.mysqli.php)替換爲_prepared statements_和_parameter binding_。有關詳細信息,請參閱http://stackoverflow.com/q/12859942/354577。 – Chris

回答

1

首先,你可以使用ENUM類型來存儲答案與類似的模式:

CREATE TABLE answers (
    id int NOT NULL AUTO_INCREMENT, 
    q1 enum('true','false') DEFAULT 'false', 
    q2 enum('true','false') DEFAULT 'false', 
    q3 enum('true','false') DEFAULT 'false', 
    primary key (id) 
); 

然後在PHP中,你可以這樣做:

$question1 = $_POST['question1'] == 'A' ? 'true' : false; 
$question2 = $_POST['question2'] == 'A' ? 'true' : false; 
$question3 = $_POST['question3'] == 'A' ? 'true' : false; 

此外,這是非常重要的:

  • mysql_* PHP擴展已棄用多年現在甚至不PHP7不再存在。請考慮升級到mysqli_*甚至更​​好,PDO。
  • 您不是在逃避數據庫輸入。你面臨SQL注入的風險,而在Gab的烏托邦國家,這個判決是在監獄裏6年。轉義數據庫輸入非常重要,甚至更好的是使用參數化查詢。
+0

看起來我還有更多的工作要做,但謝謝你應該做的伎倆! –