Hoe een ' teken opslaan in de database
Ik probeer een ' teken op te slaan in de database maar dan krijg ik de volgende foutmelding:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/mijnuser/domains/blablabla
De code die dat veroorzaakt is:
Code (php)
1
2
3
2
3
echo "<font color=green>Inserting new item..</font><br/>";
$item_insert_sql = "INSERT INTO e107_news set news_title = '$currentItem->title', news_body = '$currentItem->description$bodytotaal', news_datestamp = '$currentItem->pubDate_t', news_author = '1', news_category = '1', news_allow_comments = '0', news_start = '0', news_end = '0', news_class = '0', news_render_type = '0', news_comment_total = '0', news_sticky = '0'";
$insert_item = mysql_query($item_insert_sql, $db);
$item_insert_sql = "INSERT INTO e107_news set news_title = '$currentItem->title', news_body = '$currentItem->description$bodytotaal', news_datestamp = '$currentItem->pubDate_t', news_author = '1', news_category = '1', news_allow_comments = '0', news_start = '0', news_end = '0', news_class = '0', news_render_type = '0', news_comment_total = '0', news_sticky = '0'";
$insert_item = mysql_query($item_insert_sql, $db);
Het is een cron waarbij ik een rss ophaal en vervolgens opsla in de database.
Als er geen ' teken in voorkomt gaat het goed, maar met ' gaat het niet goed.
Nu kan ik het wel omzeilen door deze code:
Code (php)
1
2
3
2
3
$vowels = array("'");
$currentItem->title = str_replace($vowels, "", $currentItem->title);
$currentItem->description = str_replace($vowels, "", $currentItem->description);
$currentItem->title = str_replace($vowels, "", $currentItem->title);
$currentItem->description = str_replace($vowels, "", $currentItem->description);
Zo krijg ik geen foutmelding meer maar zo wordt de ' ook niet opgeslagen.
Mocht er dus bijv. een woord auto's inzitten wordt het autos.
Iemand enig idee hoe ik de code:
Code (php)
1
$item_insert_sql = "INSERT INTO e107_news set news_title = '$currentItem->title', news_body = '$currentItem->description$bodytotaal', news_datestamp = '$currentItem->pubDate_t', news_author = '1', news_category = '1', news_allow_comments = '0', news_start = '0', news_end = '0', news_class = '0', news_render_type = '0', news_comment_total = '0', news_sticky = '0'";
zo moet aanpassen dat een ' geen probleem meer is?
Gr. Kees.
Gebruik mysql(i)_real_escape_string()
En hoe gebruik ik dat met bovenstaande code zo ongeveer :P
www.php.net/mysqli_real_escape_string
(en stap af van de oude MySQL_*()-functies, en gebruik liever MySQLi)
Zie (en stap af van de oude MySQL_*()-functies, en gebruik liever MySQLi)
Code (php)
1
2
3
2
3
$vowels = array("'");
$currentItem->title = str_replace($vowels, "\'", $currentItem->title);
$currentItem->description = str_replace($vowels, "\'", $currentItem->description);
$currentItem->title = str_replace($vowels, "\'", $currentItem->title);
$currentItem->description = str_replace($vowels, "\'", $currentItem->description);
Ik zal me nog even gaan verdiepen in die link die je gaf, maar voor nu is het verholpen, bedankt!
Dat is wel een hele rare en smerige manier, terwijl ik je notabene nog verwijs naar de correcte manier?