无法向db发送查询

时间:2015-01-10 13:25:57

标签: php mysqli

我自己尝试了一些代码。我刚开始学习PHP& MySQL的。谁能告诉我哪里出错了?处理查询时出错。 我的数据库在代码中设置。 Db名称:抽奖活动 表名:alfa

<?php
$dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "sweepstakes";

 $db = mysqli_connect($dbhost,$dbuser,$dbpass, $dbname);

 if(mysqli_connect_errno()){
      die("Database connection failed: " .
          mysqli_connect_errno() .
          " (" . mysqli_connect_errno() . ")"
      );
    }


     if($_SERVER['REQUEST_METHOD']=='POST'
        && $_POST['submit']=='Submit'
        && !empty($_POST['name'])
        && !empty($_POST['description'])
        && !empty($_POST['adress'])) {

            $name = $_POST['name'];
            $desc = $_POST['description'];
            $adress = $_POST['adress'];

                $query = "INSERT INTO alfa (name, description, adress) VALUES ('$name', '$desc', '$adress')";
                $result = mysqli_query($db, $query);

                    if($result){

                    }else{
                       die("Database query failed." . mysql_error() . " " . mysqli_connect_error($db));
                    }

        } else { echo "Empty!";
        } 



?>


<form method="post" action="index.php">
        <fieldset>
            <legend>New Sweepstakes</legend>
            <label>Name: </br>
                <input type="text" name="name" maxlength="150" />
            </label> </br>

            <label>Description:</br>
                <textarea name="description" cols="45" rows="10"></textarea>
            </label> </br>

            <label>Adress:</br>
                <input type="text" name="adress" maxlength="1080" />
            </label> </br>  

            <input type="submit" name="submit" value="Submit" />
        </fieldset>
</form>

2 个答案:

答案 0 :(得分:0)

您正在混合mysqlmysqli个功能。坚持使用mysqlimysql已被弃用(请勿使用它)。

如果您没有发现它:mysql_error()应为mysqli_error()

答案 1 :(得分:0)

除了检查Halcyon写的内容(使用mysqli_error())之外,我还会检查查询字符串本身。只需在它构建完成后立即回显$ query($query = "INSERT..."行),并在运行脚本时查看输出是否符合您预期的结果,即您看到{{1}之类的内容}。如果有任何不合适的地方(例如,您可能在输入的数据中有&#39;或&#34;并且它正在搞乱字符串输出),请修复它并再试一次。

INSERT INTO alfa (name, description, adress) VALUES ('fred', 'blonde dude', 'Anywhere 32B')以及echoprint是您在新代码上进行侦探工作时的朋友,以了解预期的输出结果。

(适用编辑) 在用Halcyon阅读更新后,您应该检查自动增量字段的设置方式。例如,如果你已经修改了一段时间,但只将自动增量字段设置为INT(2),那么数字的空间可能已经用完(对于INT,最多只能达到99) 2))。将其增加到INT(11)或类似的东西,清空表格,然后再试一次。您还可以尝试print_r() table_name ALTER TABLE重置自动编号。