【问题标题】:mysql_query(INSERT ...) function not working in my codemysql_query(INSERT ...) 函数在我的代码中不起作用
【发布时间】:2012-10-19 08:15:53
【问题描述】:

我已经创建了数据库,它基本上接受名称和 ID 并回答字符串 长度为 47,我的 php 代码将根据我提供的答案键对传入的结果进行评分,并且包含正确答案计数的数字将存储在数据库中。这是我的数据库的信息。 数据库名称正在标记 和名为“答案”的表,它有以下 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'; 
?>

【问题讨论】:

  • 您似乎正试图在您的 answer_id 中存储一个不能为空的 NULL 值。
  • 失败的原因有很多。首先你必须调试它。 if (!$result) {echo mysql_error();} 验证语法错误。如果您的输入值没有正确转义,引号也可能会破坏它。
  • 您可能需要提供更多信息以供任何人了解。但是对于初学者来说,你在那里调用了 mysql_query 两次。一次就出结果。我们需要知道这些变量的值,如果你已连接,任何 mysql_error 结果等。另外,有人会因为你使用 mysql_functions 而不是 mysqli 或 pdo 而大喊大叫
  • @nathanhayfield 没关系。它是一个自增字段,赋值为NULL意味着它应该得到它的自增值。
  • @Barmar 嗯,我通常完全忽略它。从来没有这样尝试过。

标签: php mysql database web phpmyadmin


【解决方案1】:

试试这个:

// 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()) 部分不应在生产代码中使用,仅用于调试目的。

【讨论】:

  • 我喜欢这种风格。如果遇到问题,您可以轻松地将echo $q 插入到脚本中以确保其正确无误。
  • No DC,不幸的是没有错误,但它总是一切都正确编译,当我按下提交时,它总是打印'你的答案字符串必须是 10',即使你的字符串是 10,最重要的是没有存储在我的数据库中的表“答案”中
【解决方案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)");

编辑:事实证明我错了,你可以无视我的回答。

【讨论】:

  • 引用 int 字段并没有什么坏处。它将自动转换。
  • 好吧,那我真的错了,我不是 100% 确定这一点。
  • 我发布了我的整个程序,任何人都可以检查问题所在并指出我需要编辑的位置和内容以使其正常工作。
  • 请参阅我在您的 OP 中的评论,我愿意帮助您,但我们需要更多说明。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
相关资源
最近更新 更多