2016-01-27 32 views
0

我有這個與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(); 
} 

它的工作原理很好,很漂亮。我做了什麼錯誤?!這真讓我抓狂!

回答

0

它僅顯示「錯誤」,因爲你的query成功並返回一個mysql object這不等於True因此它不會回顯done

見(http://php.net/manual/en/mysqli.query.php

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.

與下面的代碼更改代碼,使其工作:

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

基本上轉動,如果周圍,使得檢查FALSE或不假。

最有可能你也想的結果存儲在一個變量,如:

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

,後來使用$row = $result->fetch_array()$row = $result_fetch_assoc()來獲取數據。

+0

謝謝!還有更多謝謝fetch_array()!一直工作太久,看不到明顯的! –

0

mysqli_query

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.

按照這個條件

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

相關問題