2016-08-09 27 views
5

Ich benutze diesen Code:DATA_TYPE aus mysql Tabelle

select data_type from information_schema.columns where table_name = '$tableName' and column_name = '$column_name' 

Aber nach echo, es Rückkehr 1. Aber wenn ich es in phpmyadmin sql laufen lasse, gibt es data_type der Spalte zurück.

Ich möchte data_type Mysql Tabelle Spalte (ich benutze Wordpress).

+1

zeigen Sie Ihren 'echo' zugehörigem Code-Schnipsel – 1000111

+0

ich alle diese> tryed $ vv = mysql_query ($ query); \t \t \t \t \t $ x = mysql_field_type ($ vv, 0); \t \t \t \t \t echo $ x; \t \t \t \t \t var_dump ($ x); –

+0

$ query = "Wählen Sie data_type aus information_schema.columns wobei table_name = '$ tableName' und column_name = '$ column_name'"; \t \t \t \t \t $ vv = $ wpdb-> Abfrage ($ query); \t \t \t \t \t $ x = mysql_fetch_field ($ query); \t \t \t \t \t echo $ x; \t \t \t \t \t var_dump ($ x); –

Antwort

0

Dies ist die richtige, habe ich es auch. $ sql = "SELECT data_type FROM informationsschema.columns WHERE tabellenname = '$ tabellenname' AND spaltenname = '$ spaltenname'";

3

Versuchen Sie dies in Wordpress. Sie sollten get_var() oder get_row() Methode verwenden.

$ wpdb-> query() gibt nur (int | false) Anzahl der Zeilen betroffen/ausgewählt oder falsch auf Fehler

$dataType = $wpdb->get_var("select data_type from information_schema.columns where table_name = '$tableName' and column_name = '$column_name' ");   
echo $dataType;exit; 

Editiert:

Ich habe versucht in meinem lokalen wie. Sie sollten, indem diese beiden Varibale $tableName='wp_posts'; $column_name='post_title'; wie unten probieren:

$tableName='wp_posts'; 
$column_name='post_title'; 
$data = $wpdb->get_var("select data_type from information_schema.columns where table_name = '$tableName' and column_name = '$column_name'"); 
echo $data; 

Ausgabe

mediumtext 
+0

Lesen Sie meinen Kommentar, ich versuche es bereits. –

+0

Wo bezieht sich Ihr Kommentar auf get_var()? –

+0

@MamunurRashid: Bitte sehen Sie meine bearbeitete Antwort. –

2

Die Werte von $tableName und $column_name in Ihrem Wordpress sind nicht das, was Sie ihnen sein erwarten.

Ich benutze diesen Code:

select data_type from information_schema.columns where table_name = '$tableName' and column_name = '$column_name' 

Aber nach Echo, es Rückkehr 1. Aber wenn ich es in phpMyAdmin SQL ausführen es data_type der Spalte zurück.

Denn wenn Sie es in phpMyAdmin laufen Sie die Werte für $tableName und $column_name explizit substituieren. Welche Werte Sie auch explizit ersetzen, das erwartet Sie in Ihren Wordpress-Dateien $tableName und $column_name. Aber sie sind nicht das, was Sie von ihnen erwarten. Sie werden dies feststellen, indem Sie die Werte in Ihrem Wordpress explizit festlegen.

select data_type from information_schema.columns where table_name = 'x' and column_name = 'y' 

Es gibt nicht genug Informationen in Ihrer Frage, um herauszufinden, was genau falsch ist. Alles, was Sie gezeigt haben, ist ein Teil davon, wie der Code aussieht. Der nächste Schritt im Debugging-Prozess besteht jedoch darin, die Variablen explizit festzulegen und dann vom Fehlerpunkt aus rückwärts zu arbeiten.

$tableName = 'x'; 
$column_name = 'y'; 
// ... 
select data_type from information_schema.columns where table_name = '$tableName' and column_name = '$column_name' 

Debugging rückwärts finden Sie den Fehler.

3

Anscheinend zu viele Werkzeuge (PHP/PhpAdmin) sind im Weg, direkt zur Antwort zu gehen.Wenn Sie nur für die Antwort suchen, verwenden Sie die MySQL-Kommandozeilen-Tool:

mysql> SELECT data_type FROM information_schema.columns 
    ->  WHERE column_name = 'id' 
    ->  AND table_schema = 'try' 
    ->  AND table_name = 'a'; 
+-----------+ 
| data_type | 
+-----------+ 
| int  | 
+-----------+ 
1 row in set (0.01 sec) 

Wenn Sie brauchen, um das Ergebnis in PHP zu verwenden, ist es die Behandlung wie jeder andere SELECT - verwenden Sie die entsprechenden API-Aufrufe in mysqli_* oder PDO, um die SELECT auszuführen, holen Sie dann die Zeilen (in diesem Fall eine Zeile) und schauen Sie sich die Spalten an (in diesem Fall eine Spalte).

Beachten Sie, dass Sie die table_schema = ... für den Fall einschließen sollten, dass es eine andere Datenbank mit denselben table_name und column_name gibt.

2

Sie können einfach wie unten den Datentyp erhalten. wo immer du willst. Sie können verschiedene data_type ändern, indem Sie den Wert von „$ tablename“ und „$ column_name“ unter

<?php 
global $wpdb;$prefix=$wpdb->prefix; 
$tableName=$prefix.'posts'; 
$column_name='post_title'; 
echo $sql="SELECT data_type FROM information_schema.columns WHERE table_name = '$tableName' AND column_name = '$column_name' "; 
    $dataType = $wpdb->get_var($sql);   
echo $dataType;?> 
1

Änderung eines Es ist Druck da, dass der Rückgabewert ist - es bedeutet, dass es ein Fehler ist. Sie versuchen, eine Ergebnismenge aus einer Zeichenfolge (Ihrer Abfrage) und nicht aus dem tatsächlichen Ergebnisobjekt abzurufen.

Dies ist, was es funktioniert:

$tableName = mysqli_real_escape_string($tableName); 
$columnName = mysqli_real_escape_string($tableName); 
$query = "select data_type "; 
$query .= "from information_schema.columns "; 
$query .= "where table_name = '$tableName' "; 
$query .= "and column_name = '$column_name' "; 
$vv = $wpdb->query($query); 
$row = mysqli_fetch_row($vv); 

In Ihrem Kommentar, sagten Sie diese Code-Anweisung war:

$query = "select data_type "; 
$query .= "from information_schema.columns "; 
$query .= "where table_name = '$tableName' "; 
$query .= "and column_name = '$column_name' "; 
$vv = $wpdb->query($query); 
$x = mysql_fetch_field ($query); 
echo $x; 
var_dump($x); 
1

$ sql = "SELECT FROM data_type information_schema.columns WHERE table_name = '$ tableName' AND column_name = '$ column_name' ";