Eroare: PDOException SQLSTATE[HY000] General error: 1 no such table

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
DanuTz1987
Mesaje: 13

Eroare: PDOException SQLSTATE[HY000] General error: 1 no such table

Salut
Am o problema la crearea unui cont imi da Erroare :

Cod: Selectaţi tot

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 no such table: users' in /home/rohostin/public_html/page.php:111 Stack trace: #0 /home/rohostin/public_html/page.php(111): PDO->query('SELECT user_nic...') #1 {main} thrown in /home/rohostin/public_html/page.php on line 111
La Linia 110 este:

Cod: Selectaţi tot

$res = mycustomdb()->query("SELECT user_nick,user_pass,id,user_plan FROM users WHERE user_nick = '".$_POST['sign-in-username']."' AND user_pass = '".str_rot13($_POST['sign-in-password'])."' LIMIT 1");
$res = $res->fetch(PDO::FETCH_ASSOC);
Baza de date

Cod: Selectaţi tot

-- phpMyAdmin SQL Dump
-- version 3.4.5
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Feb 09, 2014 at 09:09 PM
-- Server version: 5.5.16
-- PHP Version: 5.3.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: `webget`
--

-- --------------------------------------------------------

--
-- Table structure for table `codes`
--

CREATE TABLE IF NOT EXISTS `codes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` varchar(10) DEFAULT NULL,
  `uid_created` int(11) NOT NULL,
  `time_used` decimal(10,0) DEFAULT '0',
  `uid_used` int(11) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Table structure for table `download_keys`
--

CREATE TABLE IF NOT EXISTS `download_keys` (
  `dl_key` varchar(32) NOT NULL DEFAULT '',
  `dl_file` varchar(100) DEFAULT NULL,
  `dl_expires` decimal(11,0) DEFAULT NULL,
  `dl_ip` varchar(15) DEFAULT NULL,
  `dl_owner` int(5) DEFAULT NULL,
  PRIMARY KEY (`dl_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `files`
--

CREATE TABLE IF NOT EXISTS `files` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `delete_id` decimal(5,0) DEFAULT NULL,
  `real_name` varchar(90) DEFAULT NULL,
  `file_name` varchar(10) DEFAULT NULL,
  `size` decimal(25,0) DEFAULT NULL,
  `upload_time` decimal(11,0) DEFAULT NULL,
  `upload_ip` varchar(15) DEFAULT NULL,
  `downloads` int(11) DEFAULT '0',
  `user_id` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_nick` varchar(15) DEFAULT NULL,
  `user_pass` text,
  `user_mail` varchar(40) DEFAULT NULL,
  `user_downloads` int(11) DEFAULT '0',
  `user_joined` decimal(10,0) DEFAULT NULL,
  `user_laston` decimal(10,0) DEFAULT NULL,
  `user_plan` varchar(13) DEFAULT '0',
  `user_ads` text,
  `user_ads_status` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

MarPlo
Salut
Nu-mi dau seama care sa fie problema, mesajul de eroare spune ca nu exista tabelul "users", dar in codul SQL de la baza de date apare acel tabel.
- Verifica cu phpMyAdmin daca tabelul "user" e in acea baza de date, si daca merge un Select pe el.
- Daca tabelul e, incearca sa mentionezi problema acolo de unde ai luat sau e facut acel script.

DanuTz1987
am intrat in phpmyadmin, imi apare acolo users,
cand dau click pe el apare asa :

Cod: Selectaţi tot

SELECT * 
FROM  `users` 
LIMIT 0 , 30
iar daca dau Reîncarcă la Table
imi arata :

Cod: Selectaţi tot

1	id	int(11)	
2	user_nick	
3	user_pass
4	user_mail	varchar(40)
5	user_downloads	int(11)			
6	user_joined	decimal(10,0)				
7	user_laston	decimal(10,0)				
8	user_plan	varchar(13)		
9	user_ads	text	
10	user_ads_statu
, dar tot nu merge ca si cum ar fi invizibila
ce pot face?

andras
Trebuie sa faci mai multe teste sa vezi cauza. Pune in Phpmyadmin exact SELECT-ul pe care il ai in scriptul PHP (cu valori ca si cum le-ai transmite prin script), sau pune SELECT * FROM users in script sa vezi daca recunoaste tabela. Important este ca aceeasi instructiune sa functioneze atit din script cit si din Phpmyadmin, abia apoi poti cauta cauza.

MarPlo
S-ar putea ca problema sa fie in script, la setarile PDO unde se face conectarea. Poate la mycustomdb(), nu stiu sigur.
Daca tabelul users nu are inregistrari in el, incearca sa adaugi un rand cu date in el, din phpmyadmin, apoi vezi cum merge scriptul.
- In rest, ori apelezi la cine a facut acel script, ori, daca te pricepi, il iei la depanat. Dupa cum a scris si "andras", verifici in phpmyadmin sirul SQL rezultat in script. Se aplica un "echo" la comanda SQL din codul php, apoi o copii din browser si o testezi asa cum e in phpmyadmin.
De exemplu:

Cod: Selectaţi tot

if(isset($_POST['sign-in-username'])) echo "SELECT user_nick,user_pass,id,user_plan FROM users WHERE user_nick = '".$_POST['sign-in-username']."' AND user_pass = '".str_rot13($_POST['sign-in-password'])."' LIMIT 1";

DanuTz1987
asta am gasit in config.php e bine?

Cod: Selectaţi tot

// Main Website configuration:
$_CONFIG['site_name'] = www.site - Stick-ul Tau Online'; // Site Name
$_CONFIG['site_url'] = 'www.site';  // Site URL (notice: no tralining slash in the end!)
$_CONFIG['site_path']  = 'www.site';  // Website PATH (notice: no tralining slash in the end!)
$_CONFIG['admin_mail'] = 'dancrisro@yahoo.com'; // Mail used in contact us page
$_CONFIG['database'] = 'baza-de-date';  // Database file!
$_CONFIG['mysql'] = 'mysql:host=localhost;dbname=xxxxxxx';  // mysql pdo connect string change host value and dbname value!
$_CONFIG['username'] = 'Username ';  // mysql databasse username
$_CONFIG['password'] = parola';  // mysql user password
$_CONFIG['usemysql'] = false;  // use mysql? False = use pdo sqlite.

// Script Limits configuration: Download wait time
$_CONFIG['guest_wait_time']     = 60;                                           // = 60 secs default
$_CONFIG['member_wait_time']    = 45;
$_CONFIG['premiumfree_wait']    = 6;
$_CONFIG['premium_wait_time']   = 1;
// Download speeds
$_CONFIG['guest_dll']           = 85000;                                        // = 85kb/sec default
$_CONFIG['member_dll']          = 185000;
$_CONFIG['premiumfree_dll']     = 400000;
$_CONFIG['premium_dll']         = 700000;
cred ca de aici e ceva in neregula.

Cod: Selectaţi tot

$_CONFIG['mysql'] = 'mysql:host=localhost;dbname=xxxxxxx';  // mysql pdo connect string change 
aici nu stiu sa las cum e , sau trebuie modificat?

andras
N-am inteles nimic din ce ai postat. Ai pus datele tale de conectare? Ai reusit sa te conectezi la baza ta de date? Inlocuieste datele generice din script cu datele tale de conectare. Probabil de asta nu-ti recunoaste tabela users pentru ca nu ai reusit sa te conectezi la baza de date.

MarPlo
1. In codul pe care l-ai pus, la linia asta lipseste ghilimeaua de inceput. Asa e corect:

Cod: Selectaţi tot

$_CONFIG['site_name'] = 'www.site - Stick-ul Tau Online'; // Site Name 
- La fel si la: $_CONFIG['password'].

2. Daca folosesti baza de date MySQL, cred ca trebuie valoarea True la $_CONFIG['usemysql'] (False e pt. SQLite). Aici ar parea ca e problema si rezolvarea, adica asa:

Cod: Selectaţi tot

$_CONFIG['usemysql'] = true; 
3. Daca adresa serverului MySQL e localhost, e corect la $_CONFIG['mysql']. Daca nu e localhost, o poti afla din datele de la hosting unde ai site-ul, cred ca e specificata si in PhpMyAdmin.

Subiecte similare