20. april 2011 - 14:06
Der er
2 kommentarer og
1 løsning
Opdatere
Hej eksperter.
Hvorfor opdatere den ikke de felter jeg vil have med denne kode:
$sql = $dbh->prepare('UPDATE users SET aktivering = ? WHERE code = ? AND navn = ?');
$sql->bind_param('iss', 1, $code, $navn);
$sql->execute();
if($sql->affected_rows == 1){
return true;
Den opdatere ikke, men alligevel får jeg true tilbage. Hvorfor gør jeg det?
20. april 2011 - 14:37
#1
Har lige fundet ud af problemet er meget større. Den går slet ikke igennem nogle af mine if statements eller noget af det andet jeg har. Her er min kode:
<?
function getDBH() {
static $DBH = null;
if (is_null($DBH)) {
$DBH = new mysqli('kage', 'kage', 'kage', 'frugt');
}
if (mysqli_connect_errno()) {
printf('Connecting error');
exit();
}else{
return $DBH;
}
}
function activate($var){
$dbh = getDBH();
if(preg_match('/[^0-9a-f]{32}/i',stripslashes(trim($var)))){
$stmt = $dbh->prepare('SELECT code, navn FROM users WHERE code = ?');
$stmt->bind_param('s', $var);
$stmt->execute();
$stmt->bind_result($code, $navn);
$stmt->fetch();
$stmt->free_result();
if($stmt->num_rows == 1 && $code && $navn){
$sql = $dbh->prepare('UPDATE users SET aktivering = ? WHERE code = ? AND navn = ?');
$sql->bind_param('iss', 1, $code, $navn);
$sql->execute();
$sql->store_result();
if($sql->affected_rows == 1){
return true;
}else{
functions('errorTjek');
return $error = error('noEffect');
}
}else{
functions('errorTjek');
return $error = error('noMatchAkk');
}
}else{
functions('errorTjek');
return $error = error('codeError');
}
}
?>
Og det hvor den bliver kørt:
<?php
session_start();
function functions($value)
{
require("functions/" . $value . ".php");
}
functions('activation');
functions('ipTjek');
if(!$_SESSION['login'] == 1){
if($_GET['code']){
$aktivering = activate($_GET['code']);
if($aktivering == true){
echo 'Din bruger blev korrekt aktiveret. Du kan nu logge ind.';
}else{
echo $aktivering;
}
}else{
functions('errorTjek');
echo $error = error('getError');
}
}else{
functions('errorTjek');
echo $error = error('logged_in');
}
?>
20. april 2011 - 18:00
#2
Jeg smider lige 100 points oven i hatten, da der er en del mere der skal kigges igennem nu hvor jeg fandt ud af fejlen er større.