我的某些查询未执行

时间:2018-07-11 08:18:53

标签: php mysqli

我是完全不熟悉php编程的人,在w3schools上这门课,我尝试做以下事情,创建了数据库,但没有创建表,插入也没有。

<form action="sql.php" method="post">
  <br> Name: <br>
  <input type="text" name="pName">
  <br> Age: <br>
  <input type="text" name="pAge">
  <br> Position <br>
  <input type="text" name="position">
  <br> Goals: <br>
  <input type="text" name="goals">
  <br><br>
  <input type="submit" name="submit" value="Submit">
</form>

<?php
  if(isset($_POST['submit'])) {
    $name = $_POST['pName'];
    $age = $_POST['pAge'];
    $position = $_POST['position'];
    $goals = $_POST['goals'];
    echo $name . $age . $position . $goals;
    $con = new mysqli('127.0.0.1', 'root', '');
    $sql = 'CREATE DATABASE Arsenal;';
    $sql1 = 'CREATE TABLE Players (Name varchar(225) NOT NULL, Age int(11) NOT NULL, Position varchar(225) NOT NULL, Goals int(11) NOT NULL);';
    $sql2 = "INSERT INTO players ( Name, Age, Position, Goals) VALUES ( \$name, \$age, \$position, \$goals )";

    mysqli_select_db($con, 'Arsenal');

    if(mysqli_query($con, $sql)) {
      echo 'success';
    }

    if(mysqli_query($con, $sql1)) {
      echo 'success';
    }

    if(mysqli_query($con, $sql2)) {
      echo 'success';
    }
  }

5 个答案:

答案 0 :(得分:2)

您放错了mysqli_select_db()的位置,插入查询也不正确

将您的代码更改为此

if(isset($_POST['submit']))
 {
      $name = $_POST['pName'];
      $age = $_POST['pAge'];
      $position = $_POST['position'];
      $goals = $_POST['goals'];

      echo $name . $age . $position . $goals;

      $con = new mysqli('127.0.0.1', 'root', '');
      $sql = 'CREATE DATABASE Arsenal;';
      $sql1 = 'CREATE TABLE Players (Name varchar(225) NOT NULL, Age int(11) NOT NULL, Position varchar(225) NOT NULL, Goals int(11) NOT NULL);';
      $sql2 = "INSERT INTO players ( Name, Age, Position, Goals) VALUES ( '$name', '$age', '$position', '$goals' )";

      if(mysqli_query($con, $sql))
       {
           echo 'success';
       }

       mysqli_select_db($con, 'Arsenal');

       if(mysqli_query($con, $sql1))
       {
           echo 'success';
       }

        if(mysqli_query($con, $sql2))
       {
           echo 'success';
       }
 }

答案 1 :(得分:1)

创建数据库后,需要立即放置mysqli_select_db($con, 'Arsenal');,否则sql server不知道在哪个数据库中创建表。

尝试将其放在第一个echo 'success';

之后

答案 2 :(得分:1)

当心,在您的代码中,每当用户提交表单时,您的代码就会与mysql建立conexion,创建数据库并创建表(错误地因为您没有在conexion中选择数据库,所以它不会必须创建您的代码(我的意思是表),您必须分开代码,并且在用户提交表单时必须执行的唯一操作是INSERT语句。 因此,让我们看看,您可以像平常一样摆放conexion,然后查看是否已创建数据库:

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'Arsenal'

一旦您知道数据库已创建并存在,就可以选择它:

$mysqli = new mysqli('127.0.0.1', 'root', '', 'Arsenal');

但是请确保在连接到您创建的上一个检查数据库的数据库时不要这样做(您应该完成它或修改该检查,更多信息请访问php.net)

因此,现在您已连接到正确的数据库,并且能够创建表,您只需要做一次,而不必每次用户提交表单时都要做。

最后,当您拥有表格时,每次用户提交表单时都可以进行插入。

您的句子很好,只有您对SQL的工作方式有一些误解。 此外,这种代码很容易受到SQL注入的影响(用户可以使用您的表单执行SQL指令,因此他们可以对DB甚至拥有DB的计算机执行任何所需的操作)一旦您对PHP的基础知识-MYSQL有了更好的了解,就会发现这些语句。

我希望这能解决您的疑问,如有疑问,请随时发表评论

答案 3 :(得分:1)

将您的mysqli_select_db()移动到第一个if语句下方

答案 4 :(得分:0)

数据库名称应为字符串,并且在Arsenal之后的sql中也有不需要的分号。以下应该起作用。

Create a variable $newDB="Arsenal";
$sql = 'CREATE DATABASE ' . $newDB . '';