Mam problem z zapytaniem SQL... odnosnie wlasnie dodanego rekordu...

0

Oto kod. Czy ktos na pierwszy rzut oka widzi jakies bledy? WHILE mi niczego nie wyswietla. Dzieki... kolega za pomoc.

<?
session_start();

include("DatabaseConnect.php");


// ODBIERAMY CO SIE DA
$ProjectID = $_SESSION['ProjectID'];
$FullName = $_SESSION['FullName'];
$UserID = $_SESSION['ID'];

// ODBIERAMY POSTA z TEXTAREA
$Comment = $_POST['addingComment'];


// SPRAWDZAMY DANE
echo "$ProjectID, $FullName, $UserID, $Comment"; // WSZYSTKO GRA!


// DODAJEMY COMMENT

$data = [
    'userid' => $UserID,
    'projectid' => $ProjectID,
    'comment' => $Comment
];

// SPRAWDZMY JAKI JEST ID OSTATNIEGO GLOSU
$sql = "SELECT MAX(VoteID) AS MaxVoteID FROM Votes WHERE WhoUserID = :userid";



// $sql = "INSERT INTO Votes (WhoUserID, OnWhatProjectID) VALUES (:whouserid, :onwhatprojectid)";

$stmt= $pdo->prepare($sql);
$stmt->execute($data);


WHILE ($row = $stmt->fetch()) {
    
    echo 'Dupa:';
    // WYSWIETLAMY VoteID OSTATNIEGO ZAGLOSOWANIA
    echo $row['MaxVoteID'];
    
}


// INFORMACJA, ZE GLOS ZOSTAL ODDANY

// echo 'Your vote was given! Do you want to add some comment to your vote?<br><br>';


?>
1

A gdzie masz to dodawanie do bazy? INSERTa tutaj nie widzę żeby się wykonywał (jest zakomentowany)

0

Wykonujesz: SELECT MAX(VoteID) AS MaxVoteID FROM Votes WHERE WhoUserID = :userid, które dla userId=ID wyciągniętego z sesji co zwraca wykonane bezpośrednio na bazie?
Jeśli ziomek nie głosował, to pewnie nic i dlatego nic nie pokazujesz.

0
"SELECT MAX(VoteID) AS MaxVoteID FROM Votes WHERE WhoUserID = :userid"

w query masz parametr :userid który przed wykonaniem nie ma przypisanej wartości

0

Kurde bele. Jakby to powiedzial LOBO z DC komisk. Znowu zagadka na poziomie kaszki wyrzyganej przez dziecko w przedszkolu. Hmm... Wczoraj pol dnia szukalem literowki.

0

Moze WHILE nie jest odpowiednie przy wyciaganiu z bazy tylko jednego ROWa?

Sprawdzilem $sql w MyAdminie. Pieknie sie wykonuje. Wiec dlaczego w PHP mi sie nie wykonuje?

0

Moze powinienem jakos piekniej ubrac ta linijke SQLa? Hp.

SELECT MAX(`VoteID`) AS `MaxVoteID` FROM Votes WHERE `WhoUserID` = :userid;
0

Czy na kliencie bazodanowym widzisz różnicę między?
SELECT 1 WHERE 1=1
a
SELECT 1 WHERE 1=0

0
SELECT MAX(VoteID) AS MaxVoteID FROM `Votes` WHERE WhoUserID = 1

Tak proponuje PHP MyAdmin

0

A sprawdź $row[0], albo $row[1] (nie pamiętam od ilu indeksuje). Być może ma problem z "kamelem" :)

0

PROSZE!

$data = [
    'userid' => $UserID,
    'projectid' => $ProjectID
];

// SPRAWDZMY JAKI JEST ID OSTATNIEGO GLOSU
$sql = "SELECT MAX(VoteID) AS MaxVoteID FROM Votes WHERE WhoUserID = :userid";



// $sql = "INSERT INTO Votes (WhoUserID, OnWhatProjectID) VALUES (:whouserid, :onwhatprojectid)";

$stmt = $pdo->prepare($sql);
$stmt->execute($data);


WHILE ($row = $stmt->fetch(PDO::FETCH_BOTH)) {
    
    echo $row[0];
    
}
0

Z teog co pamiętam, to w execute liczba parametrów przekazywanych MUSI się zgadzać z liczbą parametrów używanych. Przekazujesz dwa parametry, używasz jeden.

0

Sluchajcie. bardzo prosze nie traktujcie mnie jak idioty! Juz odwalilem niezly kawal roboty na Prada.blog i jak teraz robie Prada.blog/GT i jak dotad z calkiem niezlym sukcesem korzystalem z indexow asocjacyjncyh. Wiec co jest do jasnej kur***, za przeproszeniem, zadam pytanie retoryczne. To znaczy takie, na ktore nie musice udzielac mi odpowiedzi. Jednak bardzo by bylo mi milo gdyby ktos jednak znalazl rozwiazanie tej zagadki. Jestem o krok od tego, zeby wyslac do PHP i MySQL dwa listy. Z pogrozkami w kazdym z osobna.

DZIALA!!! Aaaaaaa... No wiedzialem. Bill Gates za tym stoi i sobie robi ze mnie jaja!

// SPRAWDZAMY DANE
echo "$ProjectID, $FullName, $UserID, $Comment";

// WSZYSTKO WYSWIETLA POPRAWNIE!


// DODAJEMY COMMENT

$data = [ 'userid' => $UserID ];

// SPRAWDZMY JAKI JEST ID OSTATNIEGO GLOSU
$sql = "SELECT MAX(VoteID) AS MaxVoteID FROM Votes WHERE WhoUserID = :userid";



// $sql = "INSERT INTO Votes (WhoUserID, OnWhatProjectID) VALUES (:whouserid, :onwhatprojectid)";

$stmt = $pdo->prepare($sql);
$stmt->execute($data);


WHILE ($row = $stmt->fetch(PDO::FETCH_BOTH)) {
    
    echo $row[MaxVoteID];
    
}
5

Jesteś pewny, że działa? Powinieneś mieć błąd w stylu undifiend constans MaxVoteID chyba że ją gdzieś deklarujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1