【问题标题】:SELECT returning error but INSERT worksSELECT 返回错误但 INSERT 有效
【发布时间】:2018-09-02 15:56:28
【问题描述】:

运行此代码时,它会返回错误,但只显示返回$sql 查询的错误代码部分。我没有描述为什么它不起作用。奇怪的是INSERT 确实使用完全相同的代码创建了一条新记录。这是为什么呢?

我已经检查了 root 用户的权限。此用户具有完全访问权限,包括 SELECT。

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "nny_gamerrum";

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

$sql = "SELECT email FROM booking;";

if ($conn->query($sql) === TRUE) {
    echo 'Successfull';
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

echo $conn->error;

?>

返回屏幕:错误:从预订中选择电子邮件;

【问题讨论】:

  • From the manual: "对于成功的 SELECTSHOWDESCRIBEEXPLAIN 查询 mysqli_query() 将返回一个 mysqli_result 对象。”这就是你的=== TRUE 没有通过的原因。
  • @rickdenhaan 我试过echo mysqli_result(),但它返回一个错误,说明对象未定义。我也尝试了 `mysqli_result($conn->query($sql)) 但仍然没有返回任何内容。我阅读了手册,但找不到答案。
  • 更改为!== FALSE

标签: php mysql mariadb


【解决方案1】:

Here您可以找到有关查询功能的文档。 您有错误,因为此 $conn->query($sql) === TRUE 语句给出了错误。

Query method 返回取决于您插入的查询类型。 对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 方法返回 object,对于任何其他返回 true

【讨论】:

  • 我已经尝试过了,但我似乎无法让它工作。将我的选择放入我可以在屏幕上显示的 php 变量的确切代码是什么?
【解决方案2】:

试试这个:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "nny_gamerrum";

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

$sql = "SELECT email FROM booking;";

if ($data = $conn->query($sql)) {
    var_dump($data);
    echo 'Successfull';
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

echo $conn->error;

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2016-01-09
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多