mysql_query插入信息的问题

时间:2014-01-30 20:31:58

标签: php mysql

目前我的一个查询存在问题 - 似乎没有将任何值插入我的数据库。以下是我用于表单提交的代码。

<?php
if (empty($_POST) === false) {
    $assignment_data = array(
        'title'         => $_POST['title'],
        'number'        => $_POST['number'],
        'weighting'     => $_POST['weight'],
        'handout'       => $_POST['handout'],
        'handin'        => $_POST['handin'],
        'feedback'      => $_POST['feedback'],
        'wordcount'     => $_POST['wordcount'],
        'brief'         => $_POST['brief'],
        'sub_details'   => $_POST['details'],
        'add_note'  => $_POST['notes']
    );

    create_assignment($assignment_data);
    //header('Location: modules.php');
    //exit();
}
function create_assignment($assignment_data) {
    array_walk($assignment_data, 'array_sanitize');

    $fields = '`' . implode('`, `', array_keys($assignment_data)) . '`';
    $data = '\'' . implode('\', \'', $assignment_data) . '\'';

    $query = mysql_query("INSERT INTO `assignments` ($fields) VALUES ($data)");
    echo $fields;
    echo $data;
    $test = mysql_query($query) or die(mysql_error());;

    print $test;
}

?>

我的结果是将信息输入表单并提交:

`title`, `number`, `weighting`, `handout`, `handin`, `feedback`, `wordcount`, `brief`,
`sub_details`, `add_note`

'Dream Design', '2', '20', '07/01/2014', '08/01/2014', '08/01/2014', '2', 'asd',
'asdasd', 'asdasdasd'

Query was empty.

信息放在$ fields和$ data变量中,但似乎没有运行查询...没有任何内容插入到我的数据库中。

非常感谢任何帮助或帮助。

2 个答案:

答案 0 :(得分:4)

你有:

$query = mysql_query("INSERT INTO `assignments` ($fields) VALUES ($data)");

然后

$test = mysql_query($query) or die(mysql_error());;
                    ^^^^^^--- result of previous query

您不能使用查询句柄来“重新运行”查询。您需要将查询保存到变量中,然后重复使用它。 e.g。

$sql = "INSERT ...";

$query = mysql_query($sql) or die(mysql_error());
$test = mysql_query($sql) or die(mysql_error());

你的第一个查询可能失败了,返回一个布尔值为FALSE。传入另一个查询调用时,该错误将被压缩为空字符串,因此您的“空查询”错误消息。添加or die(...)业务将告诉您究竟出了什么问题。

答案 1 :(得分:0)

您运行了mysql_connect,对吧?

尝试mysql_stat()以确保。

您还可以尝试在第一个查询中获得一些错误输出:

$query = mysql_query("INSERT INTO `assignments` ($fields) VALUES ($data)") or die(mysql_error());

请请考虑使用PDO,框架或至少mysqli _