使用mysqli进行mysql查询是否需要条件语句?

时间:2019-01-12 08:25:59

标签: php mysqli

我正在使用w3schools.com PHP mysqli教程来学习如何使用PHP在数据库和服务器之间发送信息。但是,本教程并未对代码的实际作用进行深入探讨。我不确定为什么似乎需要运行条件“ if”语句才能实际发送查询。

我从网站上获取了以下代码,并在代码中添加注释以尝试弄清楚自己的行为,并发现如果我只有$ conn-> query($ sql)而不是包含它的if语句。

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

我收到此错误:

解析错误:语法错误,意外的'$ conn'(T_VARIABLE)

很显然,我没有掌握有关这些数据库连接如何工作的一些基本知识。是否可以在没有条件语句的情况下发送查询?也可以有人解释一下这是如何工作的,以及为什么这样的if语句有点令人困惑的细节。

2 个答案:

答案 0 :(得分:3)

我在此comment中读到,导致错误的代码是下一个代码。

<?php 
    $servername = "localhost"; $username = "username"; $password = "password"; // Create connection 
    $conn = new mysqli($servername, $username, $password); // Check connection 
    if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // Create database 
    $sql = "CREATE DATABASE myDB"; 
    $conn->query($sql) 
    $conn->close(); 
?>

这实际上是语法错误,因为您缺少“;”在$conn->query($sql)之后。

请下次再写导致问题出错的代码。

答案 1 :(得分:2)

您的代码看起来不错。这个错误是通过php解析器,而不是mysqli。

if($conn->query($sql) === TRUE) ... 

不需要使用true进行检查,因为$ query返回失败,true或mysqli对象

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

Is it possible to send queries without a conditional statement?

是的,但是如果要控制所有内容,则应在执行代码语句之前检查

从php手册而不是w3school中学习,

http://php.net/manual/en/mysqli.quickstart.connections.php