Niezgodność argumentu SQL

0
function user_exist($login) {
	$query = mysql_query("SELECT COUNT ('id') FROM 'users' WHERE 'login' = '$login'");
	return (mysql_result($query, 0) == 1) ? true : false;

używając user_exist do sprawdzenia czy login istnieje,

if (user_exist($login) === false) {
	$errors[] = 'Nie posiadamy takiego loginu w bazie.';

otrzymuję błąd:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource

0

Nie znam się za bardzo na SQL, ale afaik jeżeli mysql_query nie powiedzie się, to nie można wykonywać mysql_result

0

plik connect.php

<?php
$connect_error = 'Przepraszamy, problemy techniczne.';
mysql_connect("host","login","haslo") or die ($connect_error);
mysql_select_db("nazwa_bazy") or die ($connect_error);
?>

podpięty pod init.php

<?php
session_start();
//error_reporting(0); na koniec poprawić!!!
require 'core/baza/connect.php'; 
require 'funkcje/general.php';
require 'funkcje/users.php';

$errors = array();
?>

funkcja user_exist znajduje się w users.php
a to kod login.php, który sprawdza za pomoca user_exista czy login istnieje w bazie.

<?php
include 'core/init.php';

if (empty($_POST)=== false) {
	$login = $_POST['login'];
	$password = $_POST['haslo'];

	if (empty($login) === true or empty($password) === true) {
		$errors[] = 'Musisz wpisać login i haslo';
	} else if (user_exist($login) === false) {
	$errors[] = 'Nie posiadamy takiego loginu w bazie.';
	}
}

?>

jeżeli chodzi o num_rows to komunikat jest ten sam.

0

ok dzięki, poradziłem sobie.

return (mysql_result(mysql_query("SEL­ECT COUNT(id) FROM users WHERE login = '$login'"), 0) == 1) ? true : false;

po usunieciu ' działa jak należy. pozdrawiam.

0

@zalespl: masz blad w zapytaniu SQL. Aby wyswietlic komunikat bledu, nalezy uzyc funkcji mysql_error(), w ten sposob: echo mysql_error($query);
@Demonical Monk PDO jest wooolne :P Mozna tez uzyc mysqli: http://php.net/mysqli

0

PDO jest wolne? Padam na twarz. Co jest najwolniejszym elementem między php a bazą danych?
mysql / mysqli są przestarzałe i zostaną zdeprecjonowane, wszystko na temat, lepsi deweloperzy od wielu z nas (z pewnościa ode mnie) tworzyli PDO i decydowali o wprowadzeniu go domyślnie do php.
PDO daje porządne, obiektowe podejście do pracy z bazą danych plus rzeczy niedostępne w mysql / mysqli. Czekam na dzień, kiedy zostaną one całkowicie usunięte z php i skończy się era kopiowania skryptów sprzed 10 lat.

0
napisał(a):

@Demonical Monk PDO jest wooolne :P Mozna tez uzyc mysqli: http://php.net/mysqli

I co to zmienia w typowej aplikacji biznesowej, że wykona się w 30 nanosekund zamiast w 15?

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