Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 02:06

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[PHP] MySQLi problem

Discussion on [PHP] MySQLi problem within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,226
[PHP] MySQLi problem

Hey,
I'm having a problem in PHP with mysqli. I'm working under Ubuntu 14.04.
I need to fill a table with data of a DB.

This is how the DB is created:
Code:
DROP DATABASE IF EXISTS premiere;
CREATE DATABASE premiere;
USE premiere;

-- DROP TABLE IF EXISTS sender;
CREATE TABLE sender (
        sname   VARCHAR(255),
        logo    VARCHAR(255),
        PRIMARY KEY (sname)
) ENGINE = INNODB;

INSERT INTO sender VALUES ('13TH STREET', NULL);
INSERT INTO sender VALUES ('MGM', NULL);
INSERT INTO sender VALUES ('PREMIERE 1', NULL);
INSERT INTO sender VALUES ('PREMIERE 2', NULL);
INSERT INTO sender VALUES ('PREMIERE 3', NULL);
INSERT INTO sender VALUES ('PREMIERE 4', NULL);
INSERT INTO sender VALUES ('PREMIERE FILMCLASSICS', NULL);
INSERT INTO sender VALUES ('PREMIERE FILMFEST', NULL);
INSERT INTO sender VALUES ('PREMIERE KRIMI', NULL);
INSERT INTO sender VALUES ('PREMIERE NOSTALGIE', NULL);
INSERT INTO sender VALUES ('PREMIERE SERIE', NULL);
INSERT INTO sender VALUES ('PREMIERE START', NULL);
INSERT INTO sender VALUES ('SCI FI', NULL);
And this is my PHP code.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
	<head>
		<title>channels.php</title>
	</head>
	
	<body>
		
		<h1 style="font-size: 30px;">Channels</h1>
		

		<table style="font-size: 15px;" border="1">
				
			<tr>
				
				<th><a href="channels.php?order=1&dir=<?php if($_GET['dir'] == 'ASC'){ $_GET['dir'] = 'DESC';}else{ $_GET['dir'] = 'ASC';} echo $_GET['dir'];?>">Sendername</a></th>
				
				<th><a href="channels.php?order=2&dir=<?php if($_GET['dir'] == 'ASC'){ $_GET['dir'] = 'DESC';}else{ $_GET['dir'] = 'ASC';} echo $_GET['dir'];?>">Logo</a></th>
				
				
			</tr>
			
			<?php
			$db = new mysqli('localhost', 'username', 'password', 'premiere');
			
			if(isset($_GET['order']) && isset($_GET['dir']))
			{
				if($_GET['order'] == '1')
				{
						$sql = 'SELECT * FROM sender ORDER BY sname '.$_GET['dir'].' FOR UPDATE;';
				}elseif($_GET['order'] == '2')
				{
						$sql = 'SELECT * FROM sender ORDER BY logo '.$_GET['dir'].' FOR UPDATE;';
				}
			}else
			{
				$sql = 'SELECT * FROM sender FOR UPDATE;';
			}
				
				
			$stmt = $db->prepare($sql);
			$stmt->execute();
			$stmt->bind_result($senderName, $logo);

			while($stmt->fetch())
			{
				echo '<tr>';
				echo '<td>'.$senderName.'</td>';
				echo '<td>'.$logo.'</td>';
				echo '</tr>';
			}
			$stmt->close();
			?>
				
		</table>
	</body>
</html>
But somehow it doesn't work, I don't know why, i could just figure it out that after execute() the php-script crashes because nothing gets displayed out, I also tried echos after $stmt->execute(); but nothing gets printed out, thats why I think that the php-script crashes.

I hope you can help me.
XxharCs is offline  
Old 10/06/2014, 12:51   #2
 
elite*gold: 0
Join Date: Oct 2012
Posts: 71
Received Thanks: 24
Habe zwar schon langer nicht mehr mit mysqli gearbeitet da ich PDO vorziehe.
Aber Soweit ich weise müssen alle spalten in der SELECT Anweisung benannt werden

false
PHP Code:
$sql 'SELECT * FROM sender FOR UPDATE;'
true
PHP Code:
$sql 'SELECT sname, logo  FROM sender FOR UPDATE;'
_robox is offline  
Old 10/06/2014, 12:55   #3
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,226
Ne daran kann es nicht liegen, da ich das auch ausprobiert hab^^
XxharCs is offline  
Old 10/06/2014, 13:10   #4
 
elite*gold: 0
Join Date: Oct 2012
Posts: 71
Received Thanks: 24
Lasse Mall 'FOR UPDATE;' weg für die reine SELECT Anweisung wird sie ja gar nicht gebraucht.
_robox is offline  
Old 10/06/2014, 13:16   #5
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,226
Mit dem FOR UPDATE isoliere ich nur den SELECT, sollte wer dazwischen was neues einfügen oder etwas ändern.
An der Query kann es nicht liegen da sie über eine normal SQL CLI super funktioniert.
Das prob ist das das php-script nach dem execute abschmiert
XxharCs is offline  
Old 10/06/2014, 13:31   #6
 
elite*gold: 0
Join Date: Oct 2012
Posts: 71
Received Thanks: 24
das glaub ich dir das SQL CLI super funktioniert aber es muss nicht mit mysqli funktionieren
da mysqli manchmal merkwürdig Fehler verursacht die nicht immer logisch sind.

du solltest deine deine abfrage noch richtig abfangen
zum Beispiel mit einen try catch block.
PHP Code:
try 
{
$db = new mysqli('localhost''username''password''premiere');
            
            if(isset(
$_GET['order']) && isset($_GET['dir']))
            {
                if(
$_GET['order'] == '1')
                {
                        
$sql 'SELECT * FROM sender ORDER BY sname '.$_GET['dir'].' FOR UPDATE;';
                }elseif(
$_GET['order'] == '2')
                {
                        
$sql 'SELECT * FROM sender ORDER BY logo '.$_GET['dir'].' FOR UPDATE;';
                }
            }else
            {
                
$sql 'SELECT * FROM sender FOR UPDATE;';
            }
                
                
            
$stmt $db->prepare($sql);
            
$stmt->execute();
            
$stmt->bind_result($senderName$logo);

            while(
$stmt->fetch())
            {
                echo 
'<tr>';
                echo 
'<td>'.$senderName.'</td>';
                echo 
'<td>'.$logo.'</td>';
                echo 
'</tr>';
            }
            
$stmt->close(

  catch (
Exception $e
{
    echo 
'Fehler: ' htmlspecialchars($e->getMessage());

ps.
habe dein Code mal Lokal bei mir getestet und könnte keine Probleme feststellen.
_robox is offline  
Thanks
1 User
Old 10/06/2014, 15:25   #7
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,226
Sobald ich try-catch verwende, passiert garnichts mehr

Wurde bei dir die Table gefüllt? Was verwendest du und auf was hast du es getestet?
XxharCs is offline  
Old 10/06/2014, 15:33   #8
 
elite*gold: 0
Join Date: Oct 2012
Posts: 71
Received Thanks: 24
ja alles ok schicke dir per PN ein Link da kannst du dich selber überzeugen

das ist ein gans normaler Testserver nichts besonderes
Windows Version: Windows 8.1 Pro 64-bit
XAMPP Version: 1.8.3
PHP: 5.5.6
mysql: 5.6.14
_robox is offline  
Old 10/06/2014, 16:11   #9
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,226
Hab mittlerweile den Fehler gefunden . Mein Testbenutzer hatte keine Rechte auf die premiere DB, musste ihm diese verschaffen.

Habs mit hilfe von dem rausgefunden
Code:
if($db->connect_error) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
Naja trotzdem danke an die Hilfe, ohne dem try-catch würd ich nicht draufkommen mysqli_connect_errno() zu verwenden
XxharCs is offline  
Old 10/06/2014, 16:23   #10
 
elite*gold: 0
Join Date: Oct 2012
Posts: 71
Received Thanks: 24
nun ja kleine Ursache große Wirkung und auf das naheliegende kommt Mann erst zum Schluss nahe dem Mann den Fehler überall gesucht hat wie immer.

das ist mir auch schon oft genug passiert.
_robox is offline  
Reply


Similar Threads Similar Threads
[Release]Hen CMS[MySQLi]
03/18/2014 - Metin2 PServer Guides & Strategies - 14 Replies
Guten Tag, ich habe mir mal die Zeit genommen das hen CMS: http://www.elitepvpers.com/forum/metin2-pserver-g uides-strategies/557402-release-mt2gs-cms-1-3-13-0 9-2010-a.html Umzuschreiben auf die neue Mysql Klasse sprich: MySQLi Falls ihr nicht wisst warum ich das gemacht habe bitte lest euch das durch: PHP: mysql_query - Manual Falls ich etwas vergessen habe, dann schreibt es mir einfach.
[PHP][OOP]Mysqli Verbindung herstellen
09/05/2013 - Coding Releases - 5 Replies
Ahoi Knups Ich möchte euch zeigen wie ihr ganz leicht mit der Objektorientierten Programmierung (PHP) eine MYSQLi verbindung + Datenausgabe erstellen könnt Vorrausetzungen : PHP grundkenntnisse Einstieg in die Objektorientierte Programmierung Spaß ...
Problem mit MySQLi UPDATE
08/31/2013 - Web Development - 1 Replies
Hallo, ich lasse in meiner Datenbank in der Spalte "value" beim Eintragens eines Beitrags eine 0 speichern. Dieser Beitrag wird dann nicht auf der Webseite sondern erst im Adminpanel zur Bestätigung ausgegeben. Dort lasse ich direkt einen Button mit ausgeben, der die ID mit der ausgegebenen Spalte mitliefert.
PDO vs. MySQLi
02/18/2013 - Web Development - 7 Replies
Hallo Leute, ich möchte gerne eine Diskussion starten mit euch, und zwar würde mich interessieren, was ihr bevorzugt, PDO oder doch MySQLi? Was glaubt ihr, welcher der beiden wird sich in Zukunft durchsetzen?
[Mysqli Fehler]
11/30/2012 - Web Development - 4 Replies
Hallo, ich bins mal wieder. Heute habe ich folgenden Fehler. Ich möchte eine Verbindung per Mysqli aufbauen zu meiner Datenbank. Config Files und der Mysql Code ist 100% richtig. Hier mal der PhP teil dazu.



All times are GMT +1. The time now is 02:06.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.