mysqli_real_escape_string() expects parameter 1 to be mysqli
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$query=$db->prepare('SELECT * FROM homepage where id<:id;', array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute(array(':id' => 50));
while($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo "<form action ='php/zusa.php' method='POST'>
<input type='hidden' name='id' value='".$row['id']."'>
<textarea name='text'>" .$row['text']."</textarea><br/>
<input type='submit' value='Bewerk'></form>";
//echo $row['text'];
}
$query=null;
?>
$query=$db->prepare('SELECT * FROM homepage where id<:id;', array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute(array(':id' => 50));
while($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo "<form action ='php/zusa.php' method='POST'>
<input type='hidden' name='id' value='".$row['id']."'>
<textarea name='text'>" .$row['text']."</textarea><br/>
<input type='submit' value='Bewerk'></form>";
//echo $row['text'];
}
$query=null;
?>
en ik wilde de informatie in een ander script uitlezen met de $_POST functie:
Als ik de mysqli_real_escape_string weghaalt toont hij de tekst die ik wil aanpassen,maar zet ik de mysqli_real_escape_string erin dan geeft hij de foutmelding:
Quote:
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in F:\UwAmp\www\untame_phplogin_demo\admin\php\zusa.php
Ik maak de website op een lokale server op mijn computer: UwAmp en ik heb hierin al vaker update query's gemaakt en deze werkte wel
Als je het wilt uitlezen moet je niet escapen. verder gebruik je al 'prepared statements', dus dan is escapen al overbodig.
Misschien kijk ik er overheen maar ik zie helemaal geen update-query, alleen een select.
ik was nog niet toegekomen aan de update query, ik wilde eerst testen of er een resultaat uitkwam en daar krijg ik een error
Sanne Zuidema op 05/05/2014 13:10:20:
ik was nog niet toegekomen aan de update query, ik wilde eerst testen of er een resultaat uitkwam en daar krijg ik een error
En die error wil je niet delen?
Dan je mysqli_real_escape_string()
Daar gebruik je $db, maar dat hoort een verbinding naar de database te zijn (van het type mysqli).
Dat zit wel ergens in je object $db, maar dat IS het niet.
Meng niet mysqli procedurele stijl en de oop manier door elkaar.
@Aar: zie topic titel voor de foutmelding
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$username = "xxxxx";
$password = "xxxxx";
$host = "xxxxx";
$dbname = "xxxx";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); }
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
header('Content-Type: text/html; charset=utf-8');
session_start();
?>
$username = "xxxxx";
$password = "xxxxx";
$host = "xxxxx";
$dbname = "xxxx";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); }
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
header('Content-Type: text/html; charset=utf-8');
session_start();
?>
$db = new PDO(..)
en dus niet
$db = mysqli_connect(.....);
Niet dat $db = new PDO() fout is, maar dat is niet wat je nodig hebt.
Aan de andere kant: je hebt dat hele mysqli_real_escape_string() niet nodig, aangezien je met pdo werkt.