Я использую этот код для вставки некоторых значений в таблицу MySql:
<?php
mysql_connect("localhost","root","root");
mysql_select_db("bib");
$id = "12";
$titlu = "Joe";
$query = "INSERT INTO carte SET id='$id', titlu='$titlu'";
$result = mysql_query($query);
// Display an appropriate message
if ($result)
echo "<p>Product successfully inserted!</p>";
else
echo "<p>There was a problem inserting the Book!</p>";
mysql_close();
?>
После запуска в браузере происходит следующая ошибка:
"Apache HTTP Server столкнулся с проблемой и должен закрыть. Мы сожалеем о неудобствах."
Кажется, что mysql_select_db ( "bib" ) вызывает его. База данных создает, также таблицу...
Я запускаю php 5.3 и mysql 5.1 на windows xp sp 2.
Пожалуйста, любые идеи приветствуются...
Спасибо...
Любая из функций mysql_ * может выйти из строя по разным причинам. Вы должны проверить возвращаемые значения, и если функция указывает на ошибку (обычно, возвращая FALSE
), ваш script должен реагировать соответствующим образом.
mysql_error ($ link) и mysql_errno ($ link) могут предоставить вам более подробную информацию о причине. Но вы не хотите показывать все детали только произвольному пользователю, см. CWE-209: Экспозиция информации через сообщение об ошибке.
Если вы не передадите ресурс соединения, возвращенный mysql_connect(), в последующие вызовы функций mysql_ *, php принимает последнее успешно установленное соединение. Вы не должны полагаться на это; лучше передать ресурс ссылки на функции. a) Если у вас когда-либо было более одного соединения на страницу, вы должны передать его в любом случае. b) Если нет действительного соединения db, модули php-mysql пытаются установить соединение по умолчанию, которое обычно не то, что вы хотите; это занимает всего больше времени, чтобы потерпеть неудачу..again.
<?php
define('DEBUGOUTPUT', 1);
$mysql = mysql_connect("localhost","root","root");
if ( !$mysql ) {
foo('query failed', mysql_error());
}
$rc = mysql_select_db("bib", $mysql);
if ( !$rc) {
foo('select db', mysql_error($mysql));
}
$id = "12";
$titlu = "Joe";
$query = "INSERT INTO carte SET id='$id', titlu='$titlu'";
$result = mysql_query($query, $mysql);
// Display an appropriate message
if ($result) {
echo "<p>Product successfully inserted!</p>";
}
else {
foo("There was a problem inserting the Book!", mysql_error($mysql), false);
}
mysql_close($mysql);
function foo($description, $detail, $die=false) {
echo '<pre>', htmlspecialchars($description), "</pre>\n";
if ( defined('DEBUGOUTPUT') && DEBUGOUTPUT ) {
echo '<pre>', htmlspecialchars($detail), "</pre>\n";
}
if ( $die ) {
die;
}
}
попробуйте подключиться к базе данных:
$mysqlID = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD) or die("Unable to connect to database");
mysql_select_db(DB_DATABASE) or die("Unable to select database ".DB_DATABASE);
попробуйте это как ваш запрос на вставку:
$query = "INSERT INTO carte (id, title) values ('".$id."', '".addslashes($titlu)."')
$result = mysql_query($query) or die(mysql_error());
Используя die(), он сообщит вам, где он потерпел неудачу, и почему