Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

PHP mysql & wordpress

hej

har en enkel fråga som jag försökt läsa på o se om de går.

jag har 2 seperata databaser på loopia

DB1 -wordpress
DB2 - Medlems databas med massainformation

nu är de så att jag har fixat så att avändarna på min wordpress sida har fått ett extra fält i wp.user tabelen i DB1 ( Medl_nr) där jag eller nån annan admin kan ge användarna tillgång till deras information på DB2 genom att läga till deras Medl_nr (medlems nr)

detta är förstås för att när medlemarn är inloggad så ska de via en medlems sida kunna se och ändra vissa delar i informationen på DB2

men jag får inte query:n att funka med att den enbart ska plocka fram information på just den inloggad medlemen på min wordpress sida.

jag får ut informationen från wp med

global $current_user; get_currentuserinfo(); echo '<strong>Medlemsnr: </strong>' . $current_user->Medl_nr . "\n";

Koden jag försöker med i queryn är:

// Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = 'SELECT * FROM Medlemar WHERE Medlemar.Medl_nr = ". $current_user->Medl_nr ." )'; $result = mysqli_query($conn, $sql); echo "Medl_nr: " . $row['Medl_nr']. " - Namn: " . $row["namn"]. " " . $row["efternamn"]. "<br>";

nån som har nån tanke o kommentar

Trädvy Permalänk
Medlem
Registrerad
Maj 2012

Får du något felmeddelande?
Är Medl_nr en sträng eller heltal?

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

@Pake: Medl_nr är ett nr som är tilldelat t.ex 25

ändrade precis koden för att få ett riktigt svar men den bevisar att de ändå är nått som inte stämmer med WHERE för om jag tar bort den delen så får jag ut datan annars får jag 0 Resultat

Senaste koden jag använder är
----

$servername = "mysql443.loopia.se"; $username = "user"; $password = "pass"; $dbname = "db_1"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = 'SELECT * FROM Medlemar '; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "Medl_nr: " . $row['Medl_nr']. " - Namn: " . $row["namn"]. " " . $row["efternamn"]. "<br>";; } } else { echo "0 results"; } $conn->close();

Med Where

$sql = 'SELECT * FROM Medlemar WHERE Medlemar.Medl_nr = ". $current_user->Medl_nr ." )'; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "Medl_nr: " . $row['Medl_nr']. " - Namn: " . $row["namn"]. " " . $row["efternamn"]. "<br>";; } } else { echo "0 results"; } $conn->close()

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2011
Skrivet av Hell-man:

$sql = 'SELECT * FROM Medlemar WHERE Medlemar.Medl_nr = ". $current_user->Medl_nr ." )';

Nu är jag novis men du stänger en parentes i sql-queryn som jag inte kan se att du öppnat.

Trädvy Permalänk
Medlem
Registrerad
Maj 2012
Skrivet av trwl:

Nu är jag novis men du stänger en parentes i sql-queryn som jag inte kan se att du öppnat.

Just därför man måste kolla vilka felmeddelande man får

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

@Pake: fel tryck från min sida..

ända felet jag får är 0 resultat

koden är

[insert_php] $servername = "mysql443.loopia.se"; $username = "user"; $password = "pass"; $dbname = "db_1"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = 'SELECT * FROM Medlemar Where Medl_nr= $current_user->Medl_nr'; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "Medl_nr: " . $row['Medl_nr']. " - Namn: " . $row["namn"]. " " . $row["efternamn"]. "<br>";; } } else { echo "0 results"; } $conn->close(); [/insert_php]

så jag får inte så mycke fel koder att gå på.. som jag skrivit innan. Om jag byter ut $current_user->Medl_nr med en siffra .tex 25 så får jag ut datan så nått är de som saknas känner jag för att kunna använda $current_user->ID för att få ut rätt data för medlemen

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009

echo "Medl_nr: " . $row['Medl_nr']. " - Namn: " . $row["namn"]. " " . $row["efternamn"]. "<br>";;

ser du något fel i denna kodsnutten? kommer troligen inte lösa ditt problem. men de jag hittade.

sen förstår jag inte varför du har "Medl_nr= $current_user->Medl_nr". varför skriver du inte bara "Medl_nr= $current_user"?
för framtida felsökning kan jag tipsa dig om att använda supersimpla queries i början för att jobba fram felet igen.
tex inleda med
where medl_nr = 1
för att senare gå vidare till
$nr = 1
where medl_nr = $nr
och sen
where medl_nr = $nr

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

@Christley:

jag jag såg den extra ;

$current_user->Medl_nr har jag för att han ska hämta den aktiva användarens Medlems_nr som ligger i wp_users

men som de ser ut nu så får jag inte ut current user information i queryn

nån som vet om jag måste lägga till en koppling till worpress databasen eller nått är som sagt oxå novis.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009
Skrivet av Hell-man:

@Christley:

jag jag såg den extra ;

$current_user->Medl_nr har jag för att han ska hämta den aktiva användarens Medlems_nr som ligger i wp_users

men som de ser ut nu så får jag inte ut current user information i queryn

nån som vet om jag måste lägga till en koppling till worpress databasen eller nått är som sagt oxå novis.

ligger allt i samma databas?
ligger det i två olika tables under samma databas?

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

2 seperata databses

DB1 - Wordpress
DB2- Medlemsregister

informationen som ska tas ut ligger i flera tables i DB2

de ända DB1 sköter är WP o current_user

Trädvy Permalänk
Medlem
Registrerad
Maj 2012

Får du något värde om du gör:
echo $current_user->Medl_nr;

Annars är ju det felet. Initieras $current_user från WP eller gör du själv det?

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

@Pake:

echo $current_user->Medl_nr; ger mig medlems nr som jag lagt in i wp_users

de är wp som initierar current_user

Trädvy Permalänk
Medlem
Registrerad
Maj 2012

Om du gör
$sql = 'SELECT * FROM Medlemar WHERE Medlemar.Medl_nr = ". $current_user->Medl_nr;
echo $sql;

Ser det rätt ut?

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

echo $sql; på den strängen skriv ut

SELECT * FROM Medlemar WHERE Medlemar.Medl_nr= . $current_user->Medl_nr

har försökt de själv innan

Trädvy Permalänk
Testpilot, Moderator
Plats
Norrköping
Registrerad
Sep 2002

Du har enkelfnuttar (')runt din SQL-sträng, då kommer inte utrycket evalueras utan blir precis som du skriver det. Antingen byter du ut det till dubbelfnuttar (") eller så delar du upp frågan i flera delar. Ibland kan man behöva krullparenteser för att visa inom en sträng vad som ska evalueras tillsammans, tror inte det behövs i ditt fall men har lagt in det i första exemplet nedan ändå.

$sql = "SELECT * FROM Medlemar Where Medl_nr= {$current_user->Medl_nr}"; $sql = 'SELECT * FROM Medlemar Where Medl_nr=' . $current_user->Medl_nr;

När du kör echo på strängen vill du ju att den ska skriva ut en korrekt fråga utan variabelnamn, exempelvis SELECT * FROM Medlemar Where Medl_nr= 25

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 8GB][Gigabyte GeForce GTX 970 G1 Gaming]

Trädvy Permalänk
Medlem
Registrerad
Jan 2003

Är man osäker på om SQL-frågan fungerar kan man skippa php och först bara skriva den i ren SQL och testköra i t.ex. phpmyadmin. Då vet man att den i alla fall ger önskat resultat, sedan kan man ändra den och lägga till variabler från php.

Kanske en dum fråga från min sida, men heter tabellen Medlemar eller Medlemmar?

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Apr 2013

okej..

kollat över all kod ..

de verkar som $current_user->Medl_nr inte kan plocka information utanför min query till den andra databasen

går de över huvudtaget att få till en anrop mot wpdb i en query sträng när själva strängen redan är ansluten mot den andra databasen.

eller så måste jag hitta nån annan lösning för att användaren ska bara få sin information visad ..

Trädvy Permalänk
Testpilot, Moderator
Plats
Norrköping
Registrerad
Sep 2002

Om du kan skriva ut $current_user->Medl_nr på sidan genom echo $current_user->Medl_nr så kan du använda det till en SQL-fråga i vilken databas som helst, du skickar ju inte variabeln till MySQL utan en färdig fråga i form av en sträng, MySQL skiter i hur strängen skapades.

Har du testat att göra som jag skrev (enkel- vs dubbel-fnuttar) och att sen köra att göra en echo på hela frågan? testa även med måsvingar, de förstör inget om du skulle ha för många.
Ett annat alternativ är att mellanlagra id:t i en annan variabel om du tycker det är svårt ha med objektet i frågan, exempelvis $medlemsid = $current_user->Medl_nr och sen använda den variabeln i SQL-strängen.

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 8GB][Gigabyte GeForce GTX 970 G1 Gaming]