1

基本的に名前とID、および長さ47の回答文字列を受け入れるデータベースを作成しました.phpコードは、入力した結果を提供した回答キーと比較して評価し、正しい回答の数を含む数値がデータベースに保存されます. これは私のデータベースの情報です。データベース名はマーキングであり、「answer」と呼ばれるテーブルで、次の 5 つのフィールドがあります。

1) answer_id :int , not null, auto increament.
2) name: text
3)id : text
4)answers : text
5)correct : int

私の質問と問題は、機能が機能していることです

// setup query
$q = mysql_query("INSERT INTO `answer` VALUES 
 (NULL,'$name', '$id','$answers','$correct')");
// run query
$result = mysql_query($q);

または別の方法で、私のデータベースには何も保存されていませんか???

前もって感謝します。

これがプログラム全体です。

<?php
error_reporting(E_ALL ^ E_STRICT);
// to turn error reporting off 
error_reporting(0);

$name  =$_POST['name']; 
$id = $_POST['id']; 
$answers = $_POST['answers'];

// check the length of string
if(strlen($answers) !=10) 
{
print'your answer string must be 10';

return;

} 
mysql_connect("localhost","root",""); 
mysql_select_db("marking"); 
$name = addslashes($name); 
$id = addslashes($id); 
$answers =  addslashes($answers); 
$answer_key =  "abcfdbbjca"; 
$correct =  0; 
for($i=0;$i<strlen($answer_key);$i++) 
{

if($answer_key[$i]  == $answers[$i])

$correct++;

} 
 //  Setup query
$q = mysql_query("INSERT INTO `answer` VALUES ('$name', '$id','$answers','$correct')");
$result = mysql_query($q);
print 'Thnak you. You got' + $correct + 'of 10 answers correct'; 
?>
4

2 に答える 2

2

これを試して:

// setup query
$q = "INSERT INTO `answer` (`name`, `id`, `answers`, `correct`) VALUES 
 ('$name', '$id','$answers','$correct')";

//Run Query
$result = mysql_query($q) or die(mysql_error());

mysql_また、非推奨になる過程にあるため、関数の使用を避ける必要があります。代わりに、PDOに慣れることをお勧めします。

また、このor die(mysql_error())部分は本番コードでは使用しないでください。デバッグ目的でのみ使用してください。

于 2012-10-30T00:07:45.830 に答える
1

2つのこと。

実際にはクエリを 2 回実行しています。mysql_queryクエリを実行し、結果リソースを返します。http://php.net/manual/en/function.mysql-query.php

また、クエリでintcorrectを引用していますが、私の知る限り、それはできません (私は間違っている可能性があります)。

$result = mysql_query("INSERT INTO `answer` VALUES (NULL,'$name', '$id','$answers',$correct)");

編集:私が実際に間違っていることが判明しました。私の答えを無視してもかまいません。

于 2012-10-30T00:07:27.250 に答える