我正在使用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语句有点令人困惑的细节。
答案 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中学习,