Van mysql naar mysqli
ik heb in een tutorial gezien(Youtube) hoe je een de gegevens uit velden kan selecteren. nou kan ik dat wel in mysql.
maar nog niet in mysqli. het gaat voornamelijk over dit stukje...
Code (php)
1
2
3
4
2
3
4
<?php
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
return mysqli_fetch_assoc(mysqli_query($con, "SELECT `user_id` FROM `users` WHERE `username` = '$username'"));
?>
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
return mysqli_fetch_assoc(mysqli_query($con, "SELECT `user_id` FROM `users` WHERE `username` = '$username'"));
?>
maar wat is er fout aan de mysqli_... code?
- Waarom sla je niet je query op in een variabele. Dan kan je makkelijk foutafhandeling toevoegen.
Verder is mysqli_result() totaal wat anders dan mysql_result(), dus je zult mysqli_fetch_field moeten gebruiken.
en backticks gebruik ik omdat het me een keer is verteld dat het handiger is.(Mijn leraal heeft me dat verteld)
en ik wil gewoon weten hoe ik via mysqli_* het veld user_id kan selecteren zoals het staat met mysql_*
Met mysqli_fetch_assoc() moet het ook kunnen, deze haalt wel de hele rij op.
en met rij bedoel je alle records die in user_id staan of alles velden die in de tabel staan?
Standaard haalt hij een enkele rij op. Tenzij je hem in een while verwerkt. Dan haal je alles uit de hele tabel op, wat voldoet aan de query.
oke maar op de manier zoals ik het nou heb geschreven de mysqli_* query dan hoort het toch te werken?
Ja, maar de query mag je ook even los in een variabele opslaan. Zo blijft het beter leesbaarder, en kan je goede foutafhandeling toevoegen.
het rare is hij laat gewoon geen errors zien
Ik neem aan dat je wel wat echoéd.
ik gebruik return
Kan je wat meer relevante code laten zien?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
function user_id_from_username($username) {
global $con;
$username = sanitize($username);
$query = mysqli_fetch_assoc(mysqli_query($con, "SELECT `user_id` FROM `users` WHERE `username` = '$username'"));
return $query;
}
//Dit is een scheiding omdat het een andere pagina is.
//----------------------------------------------------------------------------------------------
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) || empty($password)) {
$error[] = 'Fill in all fields.';
} else {
if (user_exist($username) == false) {
$error[] = 'This username doesn\'t exist, please register first.';
} if (user_active($username) == false) {
echo 'This user is not activated, please check your email, there is an email send to your inbox.';
} else {
if (empty($error) == false) {
echo error_handeling($error);
} else {
echo 'goedzo';
user_id_from_username($username);
}
}
}
} else {
header("Location: index.php");
}
[/code]
function user_id_from_username($username) {
global $con;
$username = sanitize($username);
$query = mysqli_fetch_assoc(mysqli_query($con, "SELECT `user_id` FROM `users` WHERE `username` = '$username'"));
return $query;
}
//Dit is een scheiding omdat het een andere pagina is.
//----------------------------------------------------------------------------------------------
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) || empty($password)) {
$error[] = 'Fill in all fields.';
} else {
if (user_exist($username) == false) {
$error[] = 'This username doesn\'t exist, please register first.';
} if (user_active($username) == false) {
echo 'This user is not activated, please check your email, there is an email send to your inbox.';
} else {
if (empty($error) == false) {
echo error_handeling($error);
} else {
echo 'goedzo';
user_id_from_username($username);
}
}
}
} else {
header("Location: index.php");
}
[/code]
Kijk eens met var_dump naar wat $query terugstuurt in je functie. ;-)
oke nu geeft ie array(1) { ["user_id"]=> string(1) "1" } aan. maar waarom geeft ie het zonder dat niet aan?
Je doet niks met de returnwaarde.
nog een 'echo' voor 'user_id_from_username($username); zetten?
Toevoeging op 12/09/2014 21:00:35:
ik heb nu $query ge-return-ed en user_id_username($username); ge-echo-ed
Toevoeging op 12/09/2014 21:00:54:
en dan geeft ie dit aan.
Array ( [user_id] => 1 )
return $query['user_id'];
yes super veel bedankt het werkt