Problem z zapytaniem UPDATE w sqlite i php

0

Problem z zapytaniem UPDATE w sqlite i php. Po naciśnięciu przycisku p0 wywołuję się poniższy skrypt i wyświetla

"Fatal error: Uncaught Error: Call to undefined function sqlite_exec() in C:\xampp\htdocs\sql.php:57 Stack trace: #0 {main} thrown in C:\xampp\htdocs\sql.php on line 57"

if(isset($_POST['p0']))
{
	
	$query = sqlite_exec($db, "UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1", $error);
if (!$query) {
    exit("Error in query: '$error'");
} else {
    echo 'Number of rows modified: ', sqlite_changes($db);
}

linia 57 z erroru to "$query = sqlite_exec($db, "UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1", $error);"

0

Wystarczy wpisać frazę Call to undefined function sqlite_exec() w Google i masz dziesiątki wyników.

Tak BTW - funkcja sqlite_exec (http://php.net/manual/pl/function.sqlite-exec.php) była dostępna w wersji PHP < 5.4.0.
Zakładam, że masz nowszą wersję (przynajmniej powinieneś) i w takim wypadku należy korzystać z: http://php.net/manual/en/book.sqlite3.php

0
if(isset($_POST['p0']))
{
	
	$db-> exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1");
//if (!$query) {
 //   exit("Error in query: 'error'");
//} else {
 //   echo 'Number of rows modified: ', sqlite_changes($db);

	
	
	
	/*$sql =<<<EOF
      UPDATE TestowySerial SET stan = '1';
EOF;
   $ret = $db->exec($sql);
   if(!$ret) {
    //  echo $db->lastErrorMsg();
	  echo "BUUUU! Nie działa! :(";
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }*/
}

w komentarzu jest też podobna funkcja ale również nie działa.

0
$db-> exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1");
  1. Czemu między -> a exec jest spacja? To jest błąd składni PHP.
  2. Co jest w zmiennej $db?
0
sintloer napisał(a):
$db-> exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1");
  1. Czemu między -> a exec jest spacja? To jest błąd składni PHP.
  2. Co jest w zmiennej $db?
  1. Nie wiedziałem, poprawnione, ale dalej nie działa.
  2. Na początku mam "$db = new PDO('sqlite:lista.db');", zapytania select działają.
0

Na pewno w Twojej tabeli istnieje pole nazwa i ID? I czy na pewno istnieje tabela TestowySerial?

0
sintloer napisał(a):

Na pewno w Twojej tabeli istnieje pole nazwa i ID? I czy na pewno istnieje tabela TestowySerial?

0

Nom, wyglada ok. A jak weźmiesz to całe zapytanie w var_dump() to co dostajesz?

0

Tak?

var_dump($db->exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1"));

Efekt: "bool(false)"

0

Ok - czyli na pewno jest tu błąd.
W strukturze tabeli pole nazwa jaki ma typ i długość?

0
sintloer napisał(a):

Ok - czyli na pewno jest tu błąd.
W strukturze tabeli pole nazwa jaki ma typ i długość?

0
CodeRZ napisał(a):
if(isset($_POST['p0']))
{
	
	$db-> exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1");
//if (!$query) {
 //   exit("Error in query: 'error'");
//} else {
 //   echo 'Number of rows modified: ', sqlite_changes($db);

	
	
	
	/*$sql =<<<EOF
      UPDATE TestowySerial SET stan = '1';
EOF;
   $ret = $db->exec($sql);
   if(!$ret) {
    //  echo $db->lastErrorMsg();
	  echo "BUUUU! Nie działa! :(";
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }*/
}

w komentarzu jest też podobna funkcja ale również nie działa.

Tak z ciekawości, nie działa bo rzuca wyjątkiem, błędem? Czy też kod wykonuje się, ale brak efektu polecenia update? Wtedy przyczyną może być:
a) isset($_POST['p0']) zwraca false,
b) brak w tabeli rekordu z ID = 1.

0
cs napisał(a):
CodeRZ napisał(a):
if(isset($_POST['p0']))
{
	
	$db-> exec("UPDATE TestowySerial SET nazwa='POZMIENIAŁO SIĘ!!' WHERE ID=1");
//if (!$query) {
 //   exit("Error in query: 'error'");
//} else {
 //   echo 'Number of rows modified: ', sqlite_changes($db);

	
	
	
	/*$sql =<<<EOF
      UPDATE TestowySerial SET stan = '1';
EOF;
   $ret = $db->exec($sql);
   if(!$ret) {
    //  echo $db->lastErrorMsg();
	  echo "BUUUU! Nie działa! :(";
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }*/
}

w komentarzu jest też podobna funkcja ale również nie działa.

Tak z ciekawości, nie działa bo rzuca wyjątkiem, błędem? Czy też kod wykonuje się, ale brak efektu polecenia update? Wtedy przyczyną może być:
a) isset($_POST['p0']) zwraca false,
b) brak w tabeli rekordu z ID = 1.

a) nie wiem co zwraca ale przycisk działa bo dodałem tam echo "Przycisk kliknięty!"; i się pokazauje po klimkinęciu.
b) Jest ID 1, dałem screena wcześniej.

nie rzuca żadnym błędem, po prostu nic się nie zmienia, nic się nie robi.

nawet bez "WHERE ID=1" nic się nie dzieje, tak jakby nie można było zapisywać do bazy

0

Dobra już wiem o co chodzi. Dzięki za pomoc. Problem okazał się niezwykle prosty, nie wyłączyłem programu do zarządzania bazą. Po wyłączeniu działa jak powinno. Dzięki za pomoc raz jeszcze. :)

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