如何在PHP中使用mysqli_query()?

如何在PHP中使用mysqli_query()?,php,mysql,mysqli,Php,Mysql,Mysqli,我正在用PHP编写代码。我有以下mySQL表: CREATE TABLE `students` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `Name` varchar(255) DEFAULT NULL, `Start` int(10) DEFAULT NULL, `End` int(10) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB; 我试图用PHP中的函数来描述这个表 这是我

我正在用PHP编写代码。我有以下mySQL表:

CREATE TABLE `students` (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `Name` varchar(255) DEFAULT NULL,
  `Start` int(10) DEFAULT NULL,
  `End` int(10) DEFAULT NULL,
   PRIMARY KEY (`ID`)
 ) ENGINE=InnoDB;
我试图用PHP中的函数来描述这个表

这是我的密码:

$link = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DATABASE);
$result = mysqli_query($link,"DESCRIBE students");
文档中说,为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个对象

但是从那里我不知道如何打印
$result
,以便显示查询结果。如果可能,我希望打印$result,使其看起来像:

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| ID       | int(10)      | NO   | PRI | NULL    | auto_increment |
| Name     | varchar(255) | YES  |     | NULL    |                |
| Start    | int(10)      | YES  |     | NULL    |                |
| End      | int(10)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+ 
我的另一个问题是如何打印查询
SHOW CREATE TABLE students

$result = mysqli_query($link,"SHOW CREATE TABLE students");

我必须承认,
mysqli\u query()
manual entry没有包含一个关于如何获取多行的清晰示例。可能是因为这个例程是如此的常规,PHP的人已经知道了几十年了:

$result = $link->query("DESCRIBE students");
while ($row = $result->fetch_assoc()) {
    // to print all columns automatically:
    foreach ($row as $value) {
        echo "<td>$value</td>";
        // OR to print each column separately:
        echo "<td>",$row['Field'],"</td><td>",$row['Type'],"</td>\n";
    }
}
我必须补充两个重要的注意事项。
  • 您必须将mysqli配置为自动抛出错误,而不是手动检查每个mysqli语句的错误。为此,请在mysqli\u connect()之前添加此行:

  • 最重要的一点是:
    mysql\u query()
    不同,
    mysqli\u query()
    的用途非常有限。只有在查询中不使用变量时,才可以使用此函数。如果要使用任何PHP变量,则永远不要使用
    mysqli_query()
    ,而是始终坚持使用,如下所示:

     $stmt = $mysqli->prepare("SELECT * FROM students WHERE class=?");
     $stmt->bind_param('i', $class);
     $stmt->execute();
     $data = $stmt->get_result()->fetch_all();
    
  • 我得承认,这有点罗嗦。为了减少代码量,您可以使用PDO或采用a来完成内部的所有准备/绑定/执行业务:

    $sql = "SELECT * FROM students WHERE class=?";
    $data = prepared_select($mysqli, $sql, [$class])->fetch_all();
    

    php手册中没有帮助?我想显示表模式。通过输入命令:
    描述学生
    。另请参见,其中包括如何“打印结果行”的示例。
     mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
     $stmt = $mysqli->prepare("SELECT * FROM students WHERE class=?");
     $stmt->bind_param('i', $class);
     $stmt->execute();
     $data = $stmt->get_result()->fetch_all();
    
    $sql = "SELECT * FROM students WHERE class=?";
    $data = prepared_select($mysqli, $sql, [$class])->fetch_all();