• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

php-scripte überprüfen

syuam

Neues Mitglied
Und zwar habe ich für den Anfang vier scripte erstellt, zum einem eine DB-Verbindung und dann noch drei Tabellen, die in diese DB inseriert werden sollen.
Hier die die Datei connect_to_mysqli.php, um eine Verbindung zur DB herzustellen:
PHP:
<?php
$db = @new mysqli( 'localhost', 'root', '', 'DB' );
if (mysqli_connect_errno() == 0)
{
    echo 'Verbindung hergestellt!';
}
else
{
    echo 'Die Datenbank konnte nicht erreicht werden';
}
$db->close();
?>
Hier meine erste Tabelle, um Administratoren zu erstellen:
PHP:
<?php
require "connect_to_mysqli.php";

$sqlCommand = "CREATE TABLE admin (
                  id int(11) NOT NULL auto_increment,
                 username varchar(24) NOT NULL,
                  password varchar(24) NOT NULL,
                  last_log_date date NOT NULL,
                  PRIMARY KEY (id),
                  UNIQUE KEY username (username)
                  ) ";
if (mysqli_query($sqlCommand)){
    echo "Your admin table has been created successfully!";
} else {
    echo "CRITICAL ERROR";
}
?>
Hier die zweite Tabelle für die Produkte die ich anbieten werde:
PHP:
<?php
require "connect_to_mysqli.php";

$sqlCommand = "CREATE TABLE products (
                  id int(11) NOT NULL auto_increment,
                 product_name varchar(255) NOT NULL,
                  price varchar(16) NOT NULL,
                 details text NOT NULL,
                  date_added date NOT NULL,
                  PRIMARY KEY (id),
                  UNIQUE KEY product_name (product_name)
                  ) ";
if (mysqli_query($sqlCommand)){
    echo "Your products table has been created successfully!";
} else {
    echo "CRITICAL ERROR";
}
?>
Und hier die dritte Tabelle, für die Transaktionen, diese Tabelle soll später mit dem ipn-script kommunizieren:
PHP:
<?php
require "connect_to_mysqli.php";

$sqlCommand = "CREATE TABLE transactions (
                  id int(11) NOT NULL auto_increment,
                 product_id_array varchar(255) NOT NULL,
                  payer_email varchar(255) NOT NULL,
                 first_name varchar(255) NOT NULL,
                 last_name varchar(255) NOT NULL,
                 payment_date varchar(255) NOT NULL,
                 mc_gross varchar(255) NOT NULL,
                 payment_currency varchar(255) NOT NULL,
                  txn_id varchar(255) NOT NULL,
                 receiver_email varchar(255) NOT NULL,
                 payment_type varchar(255) NOT NULL,
                 payment_status varchar(255) NOT NULL,
                 txn_type varchar(255) NOT NULL,
                 payer_status varchar(255) NOT NULL,
                 address_street varchar(255) NOT NULL,
                 address_city varchar(255) NOT NULL,
                 address_state varchar(255) NOT NULL,
                 address_zip varchar(255) NOT NULL,
                 address_country varchar(255) NOT NULL,
                 address_status varchar(255) NOT NULL,
                 notify_version varchar(255) NOT NULL,
                 verify_sign varchar(255) NOT NULL,
                 payer_id varchar(255) NOT NULL,
                 mc_currency varchar(255) NOT NULL,
                 mc_fee varchar(255) NOT NULL,
                  PRIMARY KEY (id),
                  UNIQUE KEY txn_id (txn_id)
                  ) ";
if (mysqli_query($sqlCommand)){
    echo "Your transactions table has been created successfully!";
} else {
    echo "CRITICAL ERROR";
}
?>
Wieso ich gerne hätte, dass diese scripte auf absolute Sicherheit überprüft werden?
Weil ich erst vor kurze von mysql auf mysqli umgestiegen bin und noch nicht so sicher unterwegs bin..
Bin froh über alle Kommentare
danke
 
In Deinem Connect-Script würde ich folgendes Ändern:
  1. das db->close löschen, sonst läuft ja das query voll auf einen Fehler, bzw. wenn der Verbindungsaufbau fehlgeschlagen ist, gibt es beim close auch schon einen Fehler.
  2. Wenn die Verbindung nicht hergestellt werden konnte, würde ich statt dem echo ein die() nehmen, dann wird die weitere Ausführung sofort beendet.
Statt
PHP:
if (mysqli_query($sqlCommand))
nimmst Du
PHP:
if ($db-query($sqlCommand))
Und statt nur darauf hinzuweisen, dass es einen kritischen Fehler gegeben hat, würde ich noch die Fehlermeldung mit ausgeben
PHP:
echo "CRITICAL ERROR; ".$db->error;
Die SQL-Statements habe ich nur kurz überflogen, da ich normalerweise meine Tabellen mit phpMyAdmin erstelle und mir daher die Syntax nicht ganz so geläufig ist. Sehen aber soweit in Ordnung aus. Aber durch den Einsatz von mysqli hat sich ja an der Syntax der SQL-Statements nichts geändert.
 
ok, soweit, so gut :)
allerdings bekomme ich nun auf meiner index.php(Startseite) eine Fehlermeldung:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\MyOnlineStore\index.php on line 15
hier der code, den ich dort verwende:
$sql = mysql_query("SELECT * FROM products ORDER BY date_added DESC LIMIT 6");
$productCount = mysql_num_rows($sql); // count the output amount
bis jetzt habe ich mysqli nur für die datenbankverbindung und die tabellen..
der code auf der index.php, den ich dort verwende ist doch richtig, woher die Fehlermeldung?
LG
 
mysql_num_rows erwartet als Parameter eine resource. Stattdessen hast Du einen boolean Wert (false) da das Query vorher in die Hose gegangen ist. Erweitere mal Dein Script:
PHP:
$sql = mysql_query("SELECT * FROM products ORDER BY date_added DESC LIMIT 6");
echo "Fehler: ".mysql_error."<br />;
Achja, nochwas, ich habe mir angewöhnt grundsätzlich das SQL-Statement in eine Variable zu schreiben, gerade bei größeren, zusammengesetzten Statements wird dadurch ein debuggen enorm erleichtert.
 
Liest sich aber komplett anders als Dein vorheriges Post. Da steht doch eindeutig was der Fehler ist. Da ist ein " und erwartet wird ein String, eine Variable oder eine Zahl. Und wenn du jetzt noch den Code postest, bitte nicht nur die Zeile 19, sondern auch noch ein paar Zeilen drüber, dann könnten wir uns das dann auch anschauen.

Achja, schreibe dann auch bitte dazu, welches die Zeile 19 ist.
 
Also da ist jetzt schon vorher ein Fehler aufgetreten...
Sobald ich eine Tabelle mit phpmyadmin hochladen will, bekomme ich folgende Fehlermeldung:
[h=1]Error[/h] MySQL said:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<?php
require "connect_to_mysql.php"' at line 1
hier die Tabelle, die ich hochladen wollte:
PHP:
<?php
require "connect_to_mysql.php";
$sqlCommand = "CREATE TABLE admin (
                  id int(11) NOT NULL auto_increment,
                 username varchar(24) NOT NULL,
                  password varchar(24) NOT NULL,
                  last_log_date date NOT NULL,
                  PRIMARY KEY (id),
                  UNIQUE KEY username (username)
                  ) ";
if ($db-query($sqlCommand)) {
    echo "Your admin table has been created successfully!";
} else {
    echo "CRITICAL ERROR; ".$db->error;
}
?>
wo ist denn da nun ein syntax fehler?..
danke und LG!
 
sorry bin das falsch angegangen...das script ist gespeichert unter "create_admin_table.php".
dann habe ich es in der url aufgerufen.
Die Verbidnung wurde hergestellt, allerdings kam dann diese Fehlermeldung:
Fatal error: Call to undefined function query() in C:\xampp\htdocs\MyOnlineStore\storescripts\create_admin_table.php on line 11
Was soll ich nun machen? habe alles so gemacht wie du es in den Post´s davor erwähnt hast.
LG und danke
 
Der Fehler ist in deiner Datei connect_to_mysql.php die Du nicht gezeigt hast.

Und das aus deinem Beitrag #10 dürfte an

PHP:
$db-query($sqlCommand)

liegen. Ich vermute es müsste

PHP:
$db->query($sqlCommand)

heißen.
 
meine connect_to_mysql.php :
PHP:
<?php
$mysqli = mysqli_connect('localhost', 'root', '', 'projekt');
if (mysqli_connect_errno() == 0)
{
    echo 'Verbindung hergestellt!';
}
else
{
    die("ERROR");
}
?>
meine create_admin_table nun:
PHP:
<?php
require "connect_to_mysql.php";
$sqlCommand = "CREATE TABLE admin (
                  id int(11) NOT NULL auto_increment,
                 username varchar(24) NOT NULL,
                  password varchar(24) NOT NULL,
                  last_log_date date NOT NULL,
                  PRIMARY KEY (id),
                  UNIQUE KEY username (username)
                  ) ";
if ($mysqli->query($sqlCommand)) {
    echo "Your admin table has been created successfully!";
} else {
    echo "CRITICAL ERROR; ".$db->error;
}
?>
was nun??..
LG
 
ok so funktionierts:
<?php
$mysqli = mysqli_connect('localhost', 'root', '', 'projekt');
if (mysqli_connect_errno() == 0)
{
echo 'Verbindung hergestellt!';
}
else
{
die("ERROR");
}
?>
und:
<?php
require "connect_to_mysql.php";
$sqlCommand = "CREATE TABLE admin (
id int(11) NOT NULL auto_increment,
username varchar(24) NOT NULL,
password varchar(24) NOT NULL,
last_log_date date NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY username (username)
) ";
if ($mysqli->query($sqlCommand)) {
echo "Your admin table has been created successfully!";
} else {
echo "CRITICAL ERROR; ".$mysqli->error;
}
?>
bekomme auch keine Fehlermeldungen mehr.. schon mal gut, alles wird in die DB eingetragen.
soweit sicher die scripte?
LG
 
Zurück
Oben