Mehrere Aktualisierungsabfrage PHP / MySQL nicht funktioniert

  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 23rd, 2005, 7:17 pm

Die erste Abfrage Updates nur gut, aber meine zweite Abfrage Update nicht tun. Ich habe die Fehlerbehandlung zu verbinden Sie die beiden nur für Streicher
diesem Zweck und IM bekommen den vollen Satz, als ob keine Fehler, sondern somethings falsch, da die Tabelle nicht aktualisiert werden, bis die Spalte.
Die Spalte anhängig ist identisch in jedem Tisch, und ich möchte Sie eine Abfrage, wie sie ist die einzige Spalte müssen die Aktualisierung von Ja zu nein, aber ich konnte nicht mehr arbeiten, entweder. Und das funktioniert nur eine halbe $ $ hrsg. Die Punkte Tabelle wird in der Regel über mehrere Zeilen zu aktualisieren, da die Menschen Tabelle ist nur eine Zeile...Ich weiß nicht, ob das hätte etwas damit zu tun, denn dieser scheint richtig. Vielen Dank für jede Hilfe.

$ q = "UPDATE Personen SET pending =" no "WHERE cust_id = $ cnum und heute = $ heute";
$ r = mysql_query ($ q);
$ sql = "UPDATE Artikel SET pending =" no "WHERE cust_id = $ cnum und heute = $ heute";
$ x = mysql_query ($ sql);
if (! x) (
$ updateStatus = "Fehler Archivierung aufzeichnen."
) Else (
$ updateStatus = "Record" Archivierte ";
)
if (! r) (
$ uns = "Bitte kontaktieren Sie uns."
) Else (
$ uns = "erfolgreich".
)
echo "$ $ Bestellungsstatus uns";
  • Anonymous
  • Bot
  • No Avatar
  • Registriert: 25 Feb 2008
  • Beiträge: ?
  • Loc: Ozzuland
  • Status: Online

Beitrag Juli 23rd, 2005, 7:17 pm

  • aboyd
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Apr 02, 2005
  • Beiträge: 45
  • Loc: USA
  • Status: Offline

Beitrag Juli 24th, 2005, 1:00 am

Es scheint nicht jeder Syntax-Fehler mit Ihrem SQL. Also meine Frage wäre: "heute" in beiden Tabellen, in der exakt gleichen Format?

- Tony
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 24th, 2005, 8:17 pm

Vielen Dank für die Antwort. Leider habe ich nicht erhalten eine E-Mail-Benachrichtigung über sie und bin gerade jetzt in der Lage zu überprüfen, in meinem Post. Die heute Spalten identisch sind in jeder Tabelle. Beide speichern nur den Monat, Tag und Jahr im Format JJJJ-MM-DD. Mehr helfen, wäre sehr dankbar. Wenn jemand kann mir alle Möglichkeiten Ich kann erkunden, ID dankbar sein zu können, halten die Erforschung dieses Problems.
  • aboyd
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Apr 02, 2005
  • Beiträge: 45
  • Loc: USA
  • Status: Offline

Beitrag Juli 24th, 2005, 9:24 pm

Youll müssen, um die Tabellen. Nicht die Daten, sondern der "CREATE TABLE" stuff. Ich glaube, Sie tun können, "SHOW CREATE" zu haben MySQL-Spieß heraus, was die Tabellen aussehen. Möglicherweise benötigen Sie tun es für jede Tabelle einzeln. Wie auch immer, dann können wir mit der Abfrage an den Tisch und sehen, ob die Feldtypen sind ausgeschaltet oder etwas anderes.

- Tony
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 25th, 2005, 7:00 am

CREATE TABLE "Menschen" (
`PrimaryKey` int (11) NOT NULL auto_increment,
cust_id `` int (11) NOT NULL default "0",
`heute` date NOT NULL default "0000-00-00",
"pending" char (3) default NULL,
record_id `` datetime NOT NULL default 0000-00-00 00:00:00,
PRIMARY KEY ( `PrimaryKey")
) TYPE = MyISAM


CREATE TABLE `Posten" (
"prime` int (11) NOT NULL auto_increment,
item_num `` varchar (50) NOT NULL default,
cust_id `` varchar (10) NOT NULL default "0",
Produkt1 `` varchar (125) NOT NULL default,
qty1 `` varchar (10) NOT NULL default,
`heute` date NOT NULL default "0000-00-00",
"Zeit" Zeitstempel (14) NOT NULL,
ponum `` varchar (20) default NULL,
deldate `` varchar (11) default NULL,
Pick-up `` varchar (11) default NULL,
"Toleranz"-varchar (25) default NULL,
"pending" char (3) default NULL,
record_id `` datetime NOT NULL default 0000-00-00 00:00:00,
PRIMARY KEY ( "prime")
) TYPE = MyISAM
  • aboyd
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Apr 02, 2005
  • Beiträge: 45
  • Loc: USA
  • Status: Offline

Beitrag Juli 25th, 2005, 4:05 pm

OK, ich glaube, ich sehe es. Die "cust_id" ist ein varchar (10) in "Artikel", sondern ein "int" in die Menschen.

Sie sollten die gleichen sein, vorzugsweise int. Auch, wenn es youve verändert, sollten Sie vielleicht nicht gestellt Scnum in Anführungszeichen, wie folgt aus:

Code: [ Download ] [ Select ]
WHERE cust_id=$cnum


Auf diese Weise wird MySQL nicht jegliche Konvertierung. Auch, wie ein Tipp, wenn "offen" ist eigentlich nur "ja" und "Nein", sollten Sie es ändern, um eine ENUM-oder BOOL. Dass eine kleine Menge Speicherplatz auf der Festplatte speichern will, sondern was noch wichtiger ist, wird sie MySQL schneller gehen.

EDIT: wenn Sie Scnum Drop in die SQL-Abfrage-String, sicher sein, es enthält nur Zahlen. Sie wissen, wie man die Daten mit der rechten Maustaste zu waschen? Das könnte so aussehen:

Code: [ Download ] [ Select ]
$cnum = preg_replace('/[^0-9]+/', '', $cnum);


-Tony
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 25th, 2005, 8:57 pm

Ich korrigierte das Problem und bin nach wie vor das gleiche Problem. Die erste Updates und die zweite nicht tun. Ive lief die Abfrage nach rechts in die db und es zurückgegeben 0 betroffenen Zeilen und nicht aktualisieren. Nun, wenn ich take off für ihn zu überprüfen, gegen die WHERE-Bedingung heute Updates.
Just:

UPDATE Artikel SET pending = "no" WHERE cust_id = 1

beide Abfragen aktualisieren durch mein PHP-Programm mit dieser Veränderung, aber ich brauchen nicht alle anhängigen für Kunden-Nummer 1 geändert, um nicht nur diejenigen, passend zum Datum im Format JJJJ-MM-DD.

Warum sollte ich mich nicht geprüft, ob es gegen ein Datumsfeld?

Ive Echo diese Variablen und das Datum korrekt ist auf der Seite mit der Update-Abfrage.

Ich hoffe, es ist etwas, was ich tun kann. Thanks so much for your help so weit, Tony, und die Spitze :)

AUCH
"UPDATE Artikel SET pending =" no "WHERE cust_id = $ cnum";
[funktioniert nicht]
"UPDATE Artikel SET pending =" no "WHERE cust_id = $ cnum";
[Werke]
Was bedeutet all das einfache Anführungszeichen?
  • aboyd
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Apr 02, 2005
  • Beiträge: 45
  • Loc: USA
  • Status: Offline

Beitrag Juli 25th, 2005, 9:37 pm

Waaaait. Youre sagen, dass dies funktioniert:

Code: [ Download ] [ Select ]
UPDATE items SET pending='no' WHERE cust_id=1


Aber das funktioniert nicht:

Code: [ Download ] [ Select ]
UPDATE items SET pending='no' WHERE cust_id=$cnum


Das sind genau die gleiche, nur dass man benutzt Scnum. Das bin ich sagen würde, dass Scnum nicht 1 ist.

Auch ein anderer Gedanke. Sie wissen, dass MySQL Null ergibt sich, wenn es keine Übereinstimmung gibt, nicht wahr? Also, wenn Sie nach, wo sich heute = "2005-05-05" wird es keine Änderungen vornehmen, wenn es nichts gibt, für diesen Tag.

Auch eine weitere, gedacht. Sie wissen, dass MySQL Null ergibt sich, wenn es keine Notwendigkeit, eine Änderung mit der rechten Maustaste machen? Mit anderen Worten, wenn er feststellt, ein Rekord, der nicht die cust_id und heute übereinstimmt, aber das Feld ist bereits bis auf no gesetzt, dann ist es nicht notwendig, alles zu tun, und liefert null Datensätze verändert.

Quote:
Was hat all die einfachen Anführungszeichen bedeuten?


Einfache oder doppelte Anführungszeichen bedeuten "dies ist ein Text-String, vergleichen Sie die Zeichen für eine exakte Übereinstimmung - eine Frist, ein Komma, ein extra Null, keine zusätzlichen Zeichen bedeutet, das ist nicht ein Spiel" ohne Anführungszeichen bedeutet, "das ist ein Anzahl der eine Art, sagen Sie mir, wenn es mathematisch die gleiche Nummer - Komma, Dezimalpunkte, sollten diese Dinge nicht beeinflussen. "

Grundsätzlich als String, 01 und 1 stimmen nicht überein. Ebenso, 1,00 und 1,0 stimmen nicht überein. Allerdings, als Zahlen, 1,00 und 1. 0 und 01 und 1 sind alle die gleiche Anzahl, so entsprechen sie alle.

Wie auch immer, wenn keine dieser Lösungen ihm, du bist ein wenig hängen. Youll müssen alle den Code Post, und sogar einige der Daten in der Tabelle. Entmutigend.

-Tony

Beitrag Juli 26th, 2005, 3:02 am

Haben Sie versucht, die Ausführung einer SELECT-Anweisung mit WHERE-Klausel?
Das bedeutet:
Code: [ Download ] [ Select ]
SELECT * from items WHERE cust_id='$cnum' AND today='$today'


Das zumindest wird Ihnen sagen, ob es irgendwelche Zeilen, die der WHERE-Klausel passen. Wenn es gibt null Zeilen, theres Ihr Problem.
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 26th, 2005, 7:11 am

JA, die SELECT-Abfrage wurde die Suche nach exakten Daten brauchte ich zu aktualisieren und Tony,
Beide Fragen wurden Arbeitsgruppen

UPDATE Artikel SET pending = "no" WHERE cust_id = $ cnum
UPDATE Artikel SET pending = "no" WHERE cust_id = 1

Die mit der Variable in php war es nicht funktioniert, wenn ich nicht fügen ihn in einfache Anführungszeichen. --> :? Das war der Grund, warum ich wollte ein explanantion der Anführungszeichen. Die einzige, wo ich die Kundennummer war, wo ich die Abfrage eingegeben rechts in der Abfrage-Fenster von MySQL.

Sorry für die Verwirrung. Aber vielleicht, wenn ich aus der db ändern letzten Nacht ab varchar int dauerte es nicht sofort Wirkung, denn nun heute Morgen mein Skript arbeitet und Aktualisierung der Art, wie ich es benötigen, und das war das Einzige, was Ive sich geändert. Im laufenden zu halten Test ausgeführt, um sicherzustellen, dass ihre Arbeitsweise richtig, da ich jetzt skeptisch zu aktualisieren.
Vielen Dank für alle Hilfe, Tony. Ich halte dieses Problem behoben. Auch Dank für die Hilfe.
  • EternalStudent
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Jun 03, 2005
  • Beiträge: 56
  • Loc: NC, USA
  • Status: Offline

Beitrag Juli 26th, 2005, 11:20 am

Shouldnt SQL lesen so etwas wie:
Code: [ Download ] [ Select ]
$q = "UPDATE people SET pending='no' WHERE cust_id=" . $cnum . " AND today='". $today."'";


Sie müssen den String w / close ", bevor Sie die Variable hinzuzufügen. Im nicht positiv ist heute die einfache Anführungszeichen oder nicht braucht, aber cust_id ist ein int und sollte nicht.

Hope this helps.
  • aboyd
  • Beginner
  • Beginner
  • Benutzeravatar
  • Registriert: Apr 02, 2005
  • Beiträge: 45
  • Loc: USA
  • Status: Offline

Beitrag Juli 26th, 2005, 12:01 pm

Warum haben Sie schließen die Zeichenkette mit ", bevor Sie die Variable? Nicht" Variable interpoliert?

- Tony
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 27th, 2005, 6:37 am

Ich habe gesehen, ein Login-Abfrage in einem Buch, dass die Kontrollen Benutzernamen und das Passwort aus der Datenbank geschrieben, wie das vor und ich kann nicht mehr daran erinnern, der Grund, aber es war ein. Auch diese Abfrage für mich gearbeitet, EternalStudent, und ich brauchte einfache Anführungszeichen um heute einfach so.
  • ryanb
  • Graduate
  • Graduate
  • No Avatar
  • Registriert: Mai 20, 2005
  • Beiträge: 226
  • Loc: Oregon, US
  • Status: Offline

Beitrag Juli 27th, 2005, 10:30 am

Sie verfügen nicht über ein Dollar-Zeichen für die Variablen in "if"-Anweisungen. Ohne Dollar-Zeichen, so wird davon ausgegangen, dass eine Zeichenfolge, die vielleicht erklären, warum er nie einen Fehler zurückgegeben. Try this:

[PHP]
$ sql = "UPDATE Artikel SET pending =" no "WHERE cust_id = $ cnum und heute = $ heute";
$ x = mysql_query ($ sql);
if ($ x) (
$ updateStatus = "Fehler Archivierung Rekord:". mysql_error ();
) Else (
$ updateStatus = "Record" Archivierte ";
)

$ q = "UPDATE Personen SET pending =" no "WHERE cust_id = $ cnum und heute = $ heute";
$ r = mysql_query ($ q);
if ($ r) (
$ uns = "Fehler Archivierung Rekord:". mysql_error ();
) Else (
$ uns = "erfolgreich".
)
echo "$ $ Bestellungsstatus uns"; [/ php]

Hope that helps.
  • rezzkilla
  • Beginner
  • Beginner
  • No Avatar
  • Registriert: Jul 23, 2005
  • Beiträge: 55
  • Loc: Alabama
  • Status: Offline

Beitrag Juli 27th, 2005, 2:52 pm

Dank Ryanb,
Ich habe nicht auf PHP zu lang (i love it obwohl) und das erste Buch, das ich gelesen, sagte der häufigste Fehler ist Neuling zu vergessen die Dollar-Zeichen...Ich dachte, ich war das apast :shock:

Seine korrigiert.

Vielen Dank an alle thats antwortete.
  • Anonymous
  • Bot
  • No Avatar
  • Registriert: 25 Feb 2008
  • Beiträge: ?
  • Loc: Ozzuland
  • Status: Online

Beitrag Juli 27th, 2005, 2:52 pm

Buchung Informationen

  • Beiträge in diesem Thema: 16 Beiträge
  • Mitglieder in diesem Forum: httpftp21 und 233 Gäste
  • Du darfst keine neuen Themen in diesem Forum erstellen.
  • Du darfst keine Antworten zu Themen in diesem Forum erstellen.
  • Du darfst deine Beiträge in diesem Forum nicht ändern.
  • Du darfst deine Beiträge in diesem Forum nicht löschen.
  • Du darfst keine Dateianhänge in diesem Forum erstellen.
 
 

© Unmelted Enterprises 1998-2009. Angetrieben durch phpBB © 2001-2009 phpBB Group.