У меня есть скрипт, который вводит имена в базу данных MySQL, используя mysql_real_escape_string, чтобы апострофы обрабатывались правильно. Проблема, с которой я столкнулся, связана с приведенным ниже сценарием, который проверяет, соответствуют ли имена, введенные с использованием другой формы, именам, уже имеющимся в моей базе данных, и, если имена найдены, обновляет строку.
Когда я пытаюсь ввести имя с апострофом в форму, обрабатываемую этим скриптом, я получаю сообщение об ошибке о том, что имя не найдено, а имя в сообщении об ошибке содержит обратную косую черту перед апострофом, что, очевидно, является проблема.
Итак, вопрос в том, как я могу изменить приведенный ниже скрипт, чтобы он работал с именами с апострофами?
Спасибо,
Ник
$row_count = count($_POST['name']);
if ($row_count > 0) {
mysql_select_db($database, $connection);
$name = array();
$workshop = array();
$not_found = array();
for($i = 0; $i < $row_count; $i++) {
// variable sanitation...
$name[$i] = mysql_real_escape_string(ucwords($_POST['name'][$i]));
$workshop[$i] = mysql_real_escape_string($_POST['workshop'][$i]);
}
$names = "('".implode("','",$name)."')";
$not_in = Array();
// lets say all names doesn't exist in `conference`
foreach($name as $value) {
// names in array are keys, not values
$not_in[$value] = true;
}
$query = mysql_query("SELECT Name FROM conference WHERE Name IN $names");
while(list($dbname) = @mysql_fetch_row($query)) {
// delete those name from $not_in who exists
unset($not_in[$dbname]);
}
// names in $not_in array are keys, not values
$not_in = array_keys($not_in);
if(empty($not_in)) {
// its ok, all names have been found. do the magic.
for($i = 0; $i < $row_count; $i++) {
$sql = "UPDATE conference SET Workshop = '$workshop[$i]' WHERE Name LIKE '$name[$i]'";
mysql_query($sql);
$body .= "Name: " . $name[$i] . " Workshop: " . $workshop[$i] . "\n\n";
}
echo "SELECT Name FROM conference WHERE Name IN $names"
- person Abhay   schedule 01.11.2011echo "SELECT Name FROM conference WHERE Name IN $names"
возвращает, например,('John O\'Shea')
запросы SELECT возвращают имя с апострофом в правильном формате, например. Джон О'Ши - person Nick   schedule 01.11.2011magic_quotes_gpc = Off
в ту же папку, что и мой PHP-скрипт. До этого я видел три обратных слэша в сообщении об ошибке. - person Nick   schedule 01.11.2011