Kun je even een gevulde query laten zijn om een nieuws bericht met single-quote toe te voegen en te verwijderen. Ben benieuwd...
Link gekopieerd
Henb je een link of een voorbeeld?
Link gekopieerd
<?
if ($_GET['show'] == 'add' || $_POST['show'] == 'add')
{
if ($_POST['titel'] && $_POST['msg'] && $_POST['mydate'] && $_POST['titel'])
{
if($_FILES['myfile']['tmp_name']!=''){
$pdf = 'ja';
}
else{
$pdf = 'nee';
}
$sql = 'INSERT INTO nieuws (id, titel, msg, datum, intro, informail, pdf, files) VALUES (\'\', \'' . mysql_real_escape_string($_POST['titel']) . '\', \'' . mysql_real_escape_string($_POST['msg']) . '\', \'' . mysql_real_escape_string($_POST['mydate']) . '\', \'' . mysql_real_escape_string($_POST['intro']) . '\', \'' . mysql_real_escape_string($_POST['informail']) . '\', \'' . $pdf. '\',\''. mysql_real_escape_string($_FILES['myfile']['name']).'\')';
$res = mysql_query($sql);
if ($res) {
$melding = 'Het bericht is toegevoegd aan de site.';
/* now we try to store the posted pdf's
* let's filter maxsize in the form, instead of server side
*/
$parentId=mysql_insert_id();
foreach ( $_FILES as $file ){
if ( $file['size'] > 0 ){
/* we have a file with none zero size */
if ( is_uploaded_file($file['tmp_name']) ){
$fp=fopen($file['tmp_name'], 'r+');
$data=addslashes(fread($fp, $file['size']));
$type=mysql_real_escape_string($file['type']);
$name=mysql_real_escape_string($file['name']);
$size=mysql_real_escape_string((int)$file['size']);
$query=sprintf("INSERT INTO %s (filename, mime_type, size, data, type, pid)
VALUES ('%s', '%s', '%d', '%s', '%s', '%d')",
$db_table_files, $name, $type, $size,
$data, 'nieuws', $parentId);
mysql_query($query);
}
}
}
/* now look for current docs selected */
for ( $i=0; $i < 5; $i++ ){
$label='doc'.$i;
if ( array_key_exists($label, $_REQUEST) && $_REQUEST[$label] > 0 ){
/* fetch data */
$query=sprintf('SELECT * FROM %s WHERE file_id=%d',
$db_table_files, $_REQUEST[$label]);
$result=mysql_query($query);
$row=mysql_fetch_array($result);
$query=sprintf("INSERT INTO %s (filename, mime_type, size, data, type, pid)
VALUES('%s', '%s', '%d', '%s', '%s', '%d')",
$db_table_files, $row['filename'], $row['mime_type'], $row['size'],
addslashes($row['data']), 'nieuws', $parentId);
mysql_query($query);
print mysql_error();
}
}
}
else
{
$melding = 'Het bericht is niet toegevoegd aan de site.<br>'.$melding2;
}
echo $melding;
}
else
{
if ($_POST['submit']){
$err = 'Enkele velden vergeten.';
}
if ($_POST['mydate']){
$cdate = $_POST['mydate'];
}
else
{
$cdate = date('Y-m-d');
}
$row['msg'] = nl2br($row['msg']);
echo '<br><b>Plaats hier uw nieuwsbericht:</b><br><br>';
?>
<?
elseif ($_GET["show"] == "del")
{
if (is_numeric($_GET["id"]))
{
$sql = "DELETE FROM nieuws WHERE id = $_GET[id]";
$res = mysql_query($sql);
if ($res)
{
/* get rid of associated files */
$query=sprintf('DELETE FROM %s WHERE type=\'nieuws\' AND pid=%d',
$db_table_files, $_REQUEST['id']);
mysql_query($query);
echo "Bericht verwijderd.";
header("Location: ../pages/00nieuws.php");
}
else
{
echo "Bericht is niet verwijderd.";
}
}
else
{
echo "Geen geldig id.";
}
}
?>
Link gekopieerd
Als die titel als string in je verwijderquery terechtkomt zal dat het probleem wel zijn. Enkele quotes moet je escapen voor MySQL.
Link gekopieerd
Op regel 7 heb je:
$sql = "DELETE FROM nieuws WHERE id = $_GET[id]";
$_GET[id] moet sowieso $_GET['id'] zijn.
Verder heb je geen foutafhandeling in regel 8, waar je de query uitvoert.
Link gekopieerd
ik zal het eens proberen :) Bedankt Jan.
Link gekopieerd
als ik die ' ' ervoor zet krijg ik deze error :
Parse error: parse error, unexpected T_STRING on line 200
Link gekopieerd
Tussen enkele quotes heeft escapen geen effect.
Maak je query met dubbele quotes met daarin enkele quotes om de 'strings'.
Dus:
$sql = 'INSERT INTO nieuws (id, ..... files) VALUES (\'\', \'' . mysql_real_escape_string(......
wordt:
$sql = "INSERT INTO nieuws (id, ..... files) VALUES ('', '" . mysql_real_escape_string(......
Link gekopieerd
maw de gegevens moeten anders de database in? ik heb het gevoel dat de data prima de DB ingaat... alleen het verwijderen gaat niet?
Link gekopieerd