2016-06-24 9 views
1

Ich möchte Tabelle für App erstellen, wenn es keine solche Tabelle gibt. Aber es zum ersten Mal tun ... Brauchen Sie etwas Hilfe, thoMySQLi, wie zu prüfen, ob die Tabelle existiert?

//connecting... 
$mysqli = new mysqli($db_params['host'], $db_params['login'], $db_params['pass'], $db_params['name']); 

if ($mysqli->query("SHOW TABLES LIKE `products`")){ 
echo ' YES'; 
} else echo 'no'; 

Es sagt immer NEIN.

+1

Sie verpassen einen '$' auf 'db_params [ 'pass'] ' – Albzi

+0

natürlich eine Tabelle 'Produkte' wurde in PHP_my_admin erstellt –

+1

@Albzi nur verpasst es während der Eingabe meiner Frage, thx. In echtem Code habe ich es) –

Antwort

4

Lesen Sie ihre Dokumentation? https://dev.mysql.com/doc/refman/5.5/en/replication-features-create-if-not-exists.html Scheint, wie Sie das leicht tun können:

CREATE TABLE IF NOT EXISTS `products` 

Auf diese Weise müssen Sie nicht zuerst prüfen, ob eine Tabelle vorhanden ist oder nicht, Sie nur erstellen, wenn es nicht der Fall ist.

Und es scheint, dass Sie einen Syntaxfehler haben, was wahrscheinlich der Grund ist, warum Ihr Code immer "nein" zurückgibt. Dies sollte funktionieren:

SHOW TABLES LIKE 'products'; 

Verwenden Sie einfach einfache oder doppelte Anführungszeichen, keine Backticks wie `.

Sie verwenden Backticks (`) für Tabellen- und Spaltennamen, Single (') oder doppelte Anführungszeichen (") für Streicher, in diesem Fall, dass Sie einen String geben, so sollten Sie einfache oder doppelte Anführungszeichen verwenden.

1

Um eine Tabelle zu erstellen, wenn es nicht vorhanden ist, können Sie

CREATE TABLE IF NOT EXISTS 
1

Verwenden Sie PHP verwenden Anweisung DESCRIBE.

if(mysql_query("DESCRIBE `table_name`")) { 
    // Exists 
} 
+0

Dies ist "mysql_ *". Sie sollten "mysqli_ *" oder PDO – Editor

-1

Diese Lösung funktioniert für mich ganz gut:

<?php 
// connect to the "tests" database 
$conn = new mysqli('localhost', 'root', 'pass', 'tests'); 

// check connection 
if (mysqli_connect_errno()) { 
    exit('Connect failed: '. mysqli_connect_error()); 
} 

// SQL query 
$sql = "SHOW TABLES IN `tests`"; 

// perform the query and store the result 
$result = $conn->query($sql); 

// if the $result not False, and contains at least one row 
if($result !== false) { 
    // if at least one table in result 
    if($result->num_rows > 0) { 
    // traverse the $result and output the name of the table(s) 
    while($row = $result->fetch_assoc()) { 
     echo '<br />'. $row['Tables_in_tests']; 
    } 
    } 
    else echo 'There is no table in "tests"'; 
} 
else echo 'Unable to check the "tests", error - '. $conn->error; 

$conn->close(); 
?> 

für ein vollständiges und weitere Beispiele, hier die Quelle: http://coursesweb.net/php-mysql/check-table-exists-database_t

+1

sein. Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18345381) –

+0

@CharlieFish, hier ist der Code, aber warum die -1;) –

+0

Ich habe dich nicht downvote. –

Verwandte Themen