无法从表中选择,但我可以插入和创建


Cannot select from table, but I can insert and create?

mysql有这个非常奇怪的问题。我可以插入并创建表。但是我无法选择任何内容,并且在我尝试时它不会显示任何错误,它只是呼应我的行"错误:"

getDiff("validTable");
function getDiff($regNr) {
    global $servername, $username, $password, $dbname;
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    //todo
    $sql = "SELECT * FROM $regNr ORDER BY id LIMIT 1";
    $result = $conn->query($sql);
    if ($result === TRUE) {
        echo "done";
    } else {
        $error = $result->error;
        echo "Error: " . $error;
    }
    $conn->close();
}

但是当我使用它插入数据库时

$query = "CREATE TABLE IF NOT EXISTS $regNr ( `id` MEDIUMINT NOT NULL AUTO_INCREMENT, `mail` INT NOT NULL , `price` INT NOT NULL , `views` INT NOT NULL , `the_date` DATE NOT NULL , `time` VARCHAR(5) NOT NULL, PRIMARY KEY (id) )";
runQuery($query);
function runQuery($todo) {
   global $servername, $username, $password, $dbname;
   // Create connection
   $conn = new mysqli($servername, $username, $password, $dbname);
   // Check connection
   if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
   }
   //todo
   $sql = $todo;
   if ($conn->query($sql) === TRUE) {
       echo "done";
   } else {
       echo "Error: " . $conn->error;
   }
   $conn->close();
}

它工作得很好,很花花公子。我做错了什么?!这简直让我发疯了!

它只显示"错误",因为您的query成功并返回不等于Truemysql object,因此它不会回显done

参见 (http://php.net/manual/en/mysqli.query.php)

失败时返回 FALSE。成功选择、显示、描述或 EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为 其他成功的查询 mysqli_query() 将返回 TRUE。

使用以下代码更改代码以使其正常工作:

   if ($conn->query($sql) === FALSE) {
       echo "Error: " . $conn->error;
   } else {
       echo "done";
   }

基本上是转动if,以便它检查FALSE或非FALSE。

很可能您还希望将结果存储在变量中,例如:

   if ($result = $conn->query($sql) === FALSE) {

稍后使用$row = $result->fetch_array()$row = $result_fetch_assoc()来获取数据。

mysqli_query

失败时返回 FALSE。成功选择、显示、描述或EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为其他成功的查询 mysqli_query() 将返回 TRUE。

根据此条件

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

您从查询中得到mysqli_result,这不等于 TRUE,并且您总是进入错误条件

要从查询中获取数据,请使用fetch_array

$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)'n", $row[0]);

要获取错误表单查询,我们使用$conn->error而不是$result->error它需要您的连接变量而不是您的结果变量

阅读 http://php.net/manual/en/mysqli.error.php

相关文章: