1

Тема: Проблема з формою реєстрації

Привіт програмістам! :) , в мене знов проблема,
Пише
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\OnlineTernopil\index.php on line 37
ось код

<?php require_once"./inc/header.php";?> 
<?php require_once"./inc/connect.inc.php";?> 
<?php 
$reg = @$_POST['reg']; 

$fn = "";//ім'я 
$ln = "";//прізвище 
$un = "";//імя користувача 
$em = "";//емейл 
$em2 = "";//емейл2 
$psw = "";//пароль 
$psw2 = "";//пароль2 
$d = "";//дата 
$u_check = "";//провірка імені користувача 
//реєстраційна форма 
$fn = strip_tags(@$_POST['fname']);//ім'я 
$ln = strip_tags(@$_POST['lname']);;//прізвище 
$un = strip_tags(@$_POST['username']);;//ім'я користувача 
$em = strip_tags(@$_POST['email']);;//емейл 
$em2 = strip_tags(@$_POST['email2']);;//емейл2 
$psw = strip_tags(@$_POST['password']);;//пароль 
$psw2 = strip_tags(@$_POST['password2']);;//пароль2 
$d = date('Y-m-d');//рік місяць день 

if($reg){ 
if($em == $em2){ 
//зчитування всіх імен користувачів 
$u_check = mysql_query("SELECT username FROM users WHERE username='$us'"); 
//Розподіл по стовпцям 
$check = mysql_num_rows($u_check); 
if($check == 0){ 
//Вибрати все і провірити чи все норамально 
if($fn && $ln && $em && $em2 && $psw && $psw2){ 
//Провірка правильності паролю 
if($pwd == $pwd2){ 
//Провірка довжини паролю 
if(strlen($un) > 25 || strlen($fn) > 25 || strlen($ln) > 25){ 
echo('Максимална довжина імені_користувача/прізвища/імені є 25 символів'); 
} 
else{ 
//Провірка чи пароль не має більшої довжинии як 25 сим. і меншої як 5 см. 
if(strlen($pwd) > 30 || strlen($pwd) < 5){ 
echo('Ваш пароль перевищує 30 символів, або менший як 5 символів, виправте'); 
} 
else{ 
$pwd = md5($pwd); 
$pwd2 = md5($pwd2); 
$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')"); 
die('Вітаємо в тенопіль онлайн! теперт потрібно увійти...'); 
} 
} 
} 
} 
} 

} 
} 
?> 
<div class="container" id="container"> 
<form action="" method="post" class="wrapper"> 
<label class="h1"><h1 class="h1">Вітаємо! це перша тернопільська-соц мережа,<br> для продовження зареєструйтися</h1></label> 
<input type="text" name="fname" placeholder="Ім'я" style="width:500px;" class="form-control"><br> 
<input type="text" name="lname" placeholder="Прізвище" style="width:500px;" class="form-control"><br> 
<input type="text" name="username" placeholder="Ім'я користувача" style="width:500px;" class="form-control"><br> 
<input type="text" name="email" placeholder="Емейл адрес" style="width:500px;" class="form-control"><br> 
<input type="text" name="email2" placeholder="Емейл адрес(знову)" style="width:500px;" class="form-control"><br> 
<input type="password" name="password" placeholder="Пароль" style="width:500px;" class="form-control"><br> 
<input type="password" name="password" placeholder="Пароль(знову)" style="width:500px;" class="form-control"><br> 
<input type="submit" name="reg" value="Зареєструватися" class="btn"> 
</form> 
</div> 
<?php require_once"inc/footer.php";?>
"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

2

Re: Проблема з формою реєстрації

username='$us
Вангую,що там повинна бути $un

=)
Подякували: ostap34PHP1

3

Re: Проблема з формою реєстрації

Гадаю функція mysql_query повернула false. Перевірте (ехо вар_дамп) це та перевірте ваш запит на коректність.

український веб-довідник — css.in.ua
українська система подяк — dyaka.com
Подякували: ostap34PHP, koala2

4

Re: Проблема з формою реєстрації

NagarD написав:

Гадаю функція mysql_query повернула false. Перевірте (ехо вар_дамп) це та перевірте ваш запит на коректність.

Помилку виправивив,але до бази не підєднується база введена правильно, ось код

<?php
$db =  mysql_connect('localhost','root','') or die('Помилка зєднання');
mysql_select_db('onlineternopil');
?>
"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

5

Re: Проблема з формою реєстрації

1. Робіть відступи.

Прихований текст

замість

if(умова) {
дія();
}

робіть

if(умова) {
    дія();//зазвичай 4 пробіли, часто 2 пробіли чи 1 табуляція.
}

2. Замість коментарів біля змінних давайте їм зрозумілі імена.

Прихований текст

Замість

$fn = strip_tags(@$_POST['fname']);//ім'я 
...(50 рядків пропущено)...
if(... || strlen($fn) > 25 || ...){ //що в біса таке $fn?

робіть

$surname = strip_tags(@$_POST['fname']);
...(50 рядків пропущено)...
if(...|| strlen($surname) > 25 || ...){

3. Одразу рефакторизуйте код в очевидних випадках.

Прихований текст

Рядки 6-13 не потрібні взагалі

4. Не використовуйте застарілі функції mysql_, вживайте mysqli та PDO.

ost.bregin2014 написав:

Помилку виправивив

Як саме ви виправили помилку? Не хочете з прийдешніми поколіннями програмістів поділитися?

ost.bregin2014 написав:

але до бази не підєднується база введена правильно, ось код

Вибачте, а раніше під'єднувалося? Якщо так - то що ви змінили в коді, що перестало під'єднуватися? Якщо ні - то яким чином ви отримували в попередньому коді Warning, коли тут спрацьовував die? Якщо раніше під'єднувалося, а тепер перестало - то чому ви вирішили, що проблема саме в цьому коді, а не, скажімо, в тому, що MySQL припинив працювати?
І ще:
6. Ніколи не описуйте те, чого ваш сбійний код не робить, пишіть, що він робить замість того, що ви очікуєте.

Прихований текст

Замість "до бази не підєднується" пишіть "виводить 'Помилка зєднання'"

7. Намагайтеся уникати тверджень "x зроблено правильно", натомість описуйте, як ви це перевірили

Прихований текст

Замість "база введена правильно" пишіть "в PHPMyAdmin на localhost користувач root без пароля логіниться"

Декалог програміста-початківця: https://replace.org.ua/post/132988/
Подякували: 0xDADA11C7, ostap34PHP, Chemist-i, Monolith, 221VOLT, mike6

6

Re: Проблема з формою реєстрації

koala написав:

1. Робіть відступи.

Прихований текст

замість

if(умова) {
дія();
}

робіть

if(умова) {
    дія();//зазвичай 4 пробіли, часто 2 пробіли чи 1 табуляція.
}

2. Замість коментарів біля змінних давайте їм зрозумілі імена.

Прихований текст

Замість

$fn = strip_tags(@$_POST['fname']);//ім'я 
...(50 рядків пропущено)...
if(... || strlen($fn) > 25 || ...){ //що в біса таке $fn?

робіть

$surname = strip_tags(@$_POST['fname']);
...(50 рядків пропущено)...
if(...|| strlen($surname) > 25 || ...){

3. Одразу рефакторизуйте код в очевидних випадках.

Прихований текст

Рядки 6-13 не потрібні взагалі

4. Не використовуйте застарілі функції mysql_, вживайте mysqli та PDO.

ost.bregin2014 написав:

Помилку виправивив

Як саме ви виправили помилку? Не хочете з прийдешніми поколіннями програмістів поділитися?

ost.bregin2014 написав:

але до бази не підєднується база введена правильно, ось код

Вибачте, а раніше під'єднувалося? Якщо так - то що ви змінили в коді, що перестало під'єднуватися? Якщо ні - то яким чином ви отримували в попередньому коді Warning, коли тут спрацьовував die? Якщо раніше під'єднувалося, а тепер перестало - то чому ви вирішили, що проблема саме в цьому коді, а не, скажімо, в тому, що MySQL припинив працювати?
І ще:
6. Ніколи не описуйте те, чого ваш сбійний код не робить, пишіть, що він робить замість того, що ви очікуєте.

Прихований текст

Замість "до бази не підєднується" пишіть "виводить 'Помилка зєднання'"

7. Намагайтеся уникати тверджень "x зроблено правильно", натомість описуйте, як ви це перевірили

Прихований текст

Замість "база введена правильно" пишіть "в PHPMyAdmin на localhost користувач root без пароля логіниться"

Табуляцію я робив, але вставив код в елемент code на цьому форумі, весь код вирівнявся "в ліву сторону".
Дякую, за ваше коментування, буду виправлятися :) , першу помилку виправив тим що прочитав цю відповідь:

VTrim написав:

username='$us
Вангую,що там повинна бути $un

Другу помилку виправив тим що змінив з (помилка йшла на 22 рядок, але була на 20 рядку)

SELECT username FROM users WHERE username='$un' 

на

SELECT `username` FROM `users` WHERE username='$un' 

, хто помітив, я додав такі скобки ` оскільки вони парсяться в php.


Але зараз основна проблема в цьому коді, це те що дані які були введені в inpu-тах
НЕвставляються в базу даних phpMyAdmin , і ніяких помилок не пише, якщо я даю замало інформації, питайте, я недавно на форумі.  :)


Розумієте, цей код з самого початку не працював, я не розумію в чому причина, тепер помилок нема, але дані в базу даних не потрапляють :)  буду дуже вдячний, якщо хтось відкликнеться.

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog
Подякували: 221VOLT1

7

Re: Проблема з формою реєстрації

Дивіться. Намагаєтеся вставити дані ви ось так:

$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')"); 

При цьому значення $query ви ніяк не перевіряєте, відповідно, якщо запит закінчився невдало, ви не дізнаєтеся. Замініть його хоча б на

mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')") or die(mysql_error());

а ще краще - нащось на кшталт

$query_text ="INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')"; 
mysql_query($query_text) or die("Query '$query_text' leads to error ".mysql_error());

Ну а проблему з підключенням ви вирішили? Чи це була проблема не з підключенням, а з додаванням даних, а ви просто її так описали?

Декалог програміста-початківця: https://replace.org.ua/post/132988/
Подякували: ostap34PHP, 221VOLT2

8

Re: Проблема з формою реєстрації

koala написав:

Дивіться. Намагаєтеся вставити дані ви ось так:

$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')"); 

При цьому значення $query ви ніяк не перевіряєте, відповідно, якщо запит закінчився невдало, ви не дізнаєтеся. Замініть його хоча б на

mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')") or die(mysql_error());

а ще краще - нащось на кшталт

$query_text ="INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pwd','$id','0')"; 
mysql_query($query_text) or die("Query '$query_text' leads to error ".mysql_error());

Ну а проблему з підключенням ви вирішили? Чи це була проблема не з підключенням, а з додаванням даних, а ви просто її так описали?

Так це є проблема з додаванням даних, ви мене просвітили [:} , і я дописав багато перевірок *YAHOO* , і перемістив в окремий файл який обробляв цю форму, зробив змінні з полів "простішими" от код змінних:

$fn = $_POST['fname'];//ім'я
$ln = $_POST['lname'];//прізвище
$un = $_POST['username'];//ім'я користувача
$em = $_POST['email'];//емейл
$em2 = $_POST['email2'];//емейл2
$psw = $_POST['password'];//пароль
$psw2 = $_POST['password2'];//пароль2
var_dump($psw2);
$d = date('Y-m-d');//рік місяць день

в результаті я помітив що ВСЯ проблема в змінній psw2(знаю, переназву красивіше, password2 :) )
вона всьго навсьго НЕ бере дані з input password 2, і получає значення Null,Це останній штрих цієї "Заплутаної історії" *DANCE* , будь-ласка допоможіть мені! :)

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

9

Re: Проблема з формою реєстрації

У вас немає "input password 2". Уважніше перечитайте HTML-код.

Декалог програміста-початківця: https://replace.org.ua/post/132988/

10

Re: Проблема з формою реєстрації

koala написав:

У вас немає "input password 2". Уважніше перечитайте HTML-код.

Дякую, вже додав, але те саме! :(

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

11

Re: Проблема з формою реєстрації

ost.bregin2014 написав:
koala написав:

У вас немає "input password 2". Уважніше перечитайте HTML-код.

Дякую, вже додав, але те саме! :(

<input type="password" name="password2" placeholder="Пароль(знову)" style="width:500px;" class="form-control"><br>
"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

12

Re: Проблема з формою реєстрації

Увага! я вирішив свою проблему, просто в базі даних було бульше стовпців ніж я заповнив в mysql_query, дуже дякую всім допомогу! дуже вдячний!

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog
Подякували: koala1

13

Re: Проблема з формою реєстрації

ost.bregin2014 написав:

Увага! я вирішив свою проблему, просто в базі даних було більше стовпців ніж я заповнив в mysql_query, дуже дякую всім допомогу! дуже вдячний!

Дуже!

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog

14 Востаннє редагувалося 221VOLT (23.01.2017 01:57:29)

Re: Проблема з формою реєстрації

найголовніша проблема --
використання застарілих mysql_*
використовуйте mysqli_* натомість

приклади

Прихований текст

sql

CREATE DATABASE  `xmpl` ;

USE `xmpl`;

CREATE TABLE  `xmpl`.`users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'guest', '123456');
INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'user', '654321');
INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'admin', '456123');

simple select

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');


$sql = "SELECT * FROM users";
$result = mysqli_query($db, $sql); // mysql_query(///)

echo "<h2>Вивід строк з результату по одній: </h2>";
while($user = mysqli_fetch_assoc($result)) { // mysql_fetch_assoc(...)
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}


echo "<hr />";


$sql = "SELECT * FROM users";
$result = mysqli_query($db, $sql);
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);

echo "<h2>Вибірка всіх строк в масив і вивід на екран: </h2>";
foreach ($users as $user) {
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}


echo "<hr />";


$sql = "SELECT * FROM users";

$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $id, $username, $password);

echo "<h2>Вивід строк за допомою підготовленого виразу і привязка даних до змінних: </h2>";
while (mysqli_stmt_fetch($stmt)) {
    echo "{$id}. Username: {$username}, Password: {$password}. <br />";
}

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

select with params

<?
$db = mysqli_connect('localhost', 'root', '', 'xmpl');


$username = 'guest';
$password = '123456'; // "' OR '1'='1"

$sql = "SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' LIMIT 1";

$result = mysqli_query($db, $sql);

echo "<h2>Вибірка строк без захисту від SQL-injection: </h2>";
if (mysqli_num_rows($result) == 1) {
    $user = mysqli_fetch_assoc($result);
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}

echo "<hr />";


$username = mysqli_real_escape_string($db, 'guest');
$password = mysqli_real_escape_string($db, '123456'); // "' OR '1'='1"

$sql = "SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' LIMIT 1";

$result = mysqli_query($db, $sql);

echo "<h2>Вибірка строк з \"ручним\" захистом від SQL-injection: </h2>";
if (mysqli_num_rows($result) == 1) {
    $user = mysqli_fetch_assoc($result);
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}

echo "<hr />";



$sql = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";
$stmt = mysqli_prepare($db, $sql);
mysqli_stmt_bind_param($stmt, 'ss', $usrnm, $psswrd);

$usrnm = 'guest';
$psswrd = '123456'; // "' OR '1'='1"

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $id, $username, $password);

echo "<h2>Вибірка строк з \"автоматичним\" захистом від SQL-injection: </h2>";
mysqli_stmt_fetch($stmt);
echo "{$id}. Username: {$username}, Password: {$password}. <br />";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

insert

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 'ss', $username, $password);

$username = 'author';
$password = '987456';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";
echo '<p>ID вставленої строки: ' . mysqli_insert_id($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

delete

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "DELETE FROM users WHERE password = ?";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 's', $password);

$password = '987456';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

update

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "UPDATE users SET username = ? WHERE id = ?";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 'si', $username, $id);

$username = 'manager';
$id = '5';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

успіхів!!

p.s. на майбутнє -- завжди робіть вивід помилок при запитах до бд (в процесі розробки) --

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!mysqli_query($link, "SET a=1")) {
    printf("Errormessage: %s\n", mysqli_error($link));
}

mysqli_close($link);
?>

або

<?
$rez = mysqli_query($link, "SET a=1") or die("Errormessage:".mysqli_error($link));
?>

зекономить час/гроші і нерви))

Все на світі, як вода, Світла радість і біда. Все тече і все біжить в нікуди,
Все на світі, як пісок, Залиши на ньому крок, Змиє все вода, бо так було й так буде.

telegram: @TTaraskin
Подякували: ostap34PHP1

15

Re: Проблема з формою реєстрації

221VOLT написав:

найголовніша проблема --
використання застарілих mysql_*
використовуйте mysqli_* натомість

приклади

Прихований текст

sql

CREATE DATABASE  `xmpl` ;

USE `xmpl`;

CREATE TABLE  `xmpl`.`users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'guest', '123456');
INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'user', '654321');
INSERT INTO `xmpl`.`users` (`id`, `username`, `password`) VALUES (NULL, 'admin', '456123');

simple select

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');


$sql = "SELECT * FROM users";
$result = mysqli_query($db, $sql); // mysql_query(///)

echo "<h2>Вивід строк з результату по одній: </h2>";
while($user = mysqli_fetch_assoc($result)) { // mysql_fetch_assoc(...)
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}


echo "<hr />";


$sql = "SELECT * FROM users";
$result = mysqli_query($db, $sql);
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);

echo "<h2>Вибірка всіх строк в масив і вивід на екран: </h2>";
foreach ($users as $user) {
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}


echo "<hr />";


$sql = "SELECT * FROM users";

$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $id, $username, $password);

echo "<h2>Вивід строк за допомою підготовленого виразу і привязка даних до змінних: </h2>";
while (mysqli_stmt_fetch($stmt)) {
    echo "{$id}. Username: {$username}, Password: {$password}. <br />";
}

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

select with params

<?
$db = mysqli_connect('localhost', 'root', '', 'xmpl');


$username = 'guest';
$password = '123456'; // "' OR '1'='1"

$sql = "SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' LIMIT 1";

$result = mysqli_query($db, $sql);

echo "<h2>Вибірка строк без захисту від SQL-injection: </h2>";
if (mysqli_num_rows($result) == 1) {
    $user = mysqli_fetch_assoc($result);
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}

echo "<hr />";


$username = mysqli_real_escape_string($db, 'guest');
$password = mysqli_real_escape_string($db, '123456'); // "' OR '1'='1"

$sql = "SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' LIMIT 1";

$result = mysqli_query($db, $sql);

echo "<h2>Вибірка строк з \"ручним\" захистом від SQL-injection: </h2>";
if (mysqli_num_rows($result) == 1) {
    $user = mysqli_fetch_assoc($result);
    echo "{$user['id']}. Username: {$user['username']}, Password: {$user['password']}. <br />";
}

echo "<hr />";



$sql = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";
$stmt = mysqli_prepare($db, $sql);
mysqli_stmt_bind_param($stmt, 'ss', $usrnm, $psswrd);

$usrnm = 'guest';
$psswrd = '123456'; // "' OR '1'='1"

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $id, $username, $password);

echo "<h2>Вибірка строк з \"автоматичним\" захистом від SQL-injection: </h2>";
mysqli_stmt_fetch($stmt);
echo "{$id}. Username: {$username}, Password: {$password}. <br />";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

insert

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 'ss', $username, $password);

$username = 'author';
$password = '987456';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";
echo '<p>ID вставленої строки: ' . mysqli_insert_id($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

delete

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "DELETE FROM users WHERE password = ?";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 's', $password);

$password = '987456';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

update

<?php

$db = mysqli_connect('localhost', 'root', '', 'xmpl');

$sql = "UPDATE users SET username = ? WHERE id = ?";
$stmt = mysqli_prepare($db, $sql);

mysqli_stmt_bind_param($stmt, 'si', $username, $id);

$username = 'manager';
$id = '5';

mysqli_stmt_execute($stmt);

echo '<p>Було задіяно строк: ' . mysqli_affected_rows($db) . "</p>";

mysqli_stmt_close($stmt);

mysqli_close($db);
?>

успіхів!!

p.s. на майбутнє -- завжди робіть вивід помилок при запитах до бд (в процесі розробки) --

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!mysqli_query($link, "SET a=1")) {
    printf("Errormessage: %s\n", mysqli_error($link));
}

mysqli_close($link);
?>

або

<?
$rez = mysqli_query($link, "SET a=1") or die("Errormessage:".mysqli_error($link));
?>

зекономить час/гроші і нерви))

Дякую! буду переходити на Mysqli :)

"Лупайте сю скалу!" - Іван Франко

Нотатник: https://t.me/laravel_ua_blog
Подякували: 221VOLT1