Любая из функций mysql_ * может не работать по разным причинам. Вы должны проверить возвращаемые значения, и если функция сообщает об ошибке (обычно возвращая FALSE
), ваш скрипт должен реагировать соответствующим образом.
mysql_error ($ link) и mysql_errno ($ link) могут предоставить вам более подробную информацию о причине. Но вы не хотите показывать все детали какому-либо произвольному пользователю, см. CWE-209: раскрытие информации через сообщение об ошибке .
Если вы не передадите ресурс подключения, возвращенный mysql_connect (), к последующим вызовам функций mysql_ *, php предполагает последнее успешно установленное соединение. Вы не должны полагаться на это; лучше передать ресурс ссылки на функции. а) Если у вас когда-либо есть более одного соединения на страницу, вы все равно должны пройти его. б) Если нет действительного соединения с БД, модули php-mysql пытаются установить соединение по умолчанию, которое обычно не то, что вам нужно; это займет больше времени, чтобы потерпеть неудачу .. снова.
<code><?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), "
\ п ";
если (определено ('DEBUGOUTPUT') && DEBUGOUTPUT) {
echo '
', htmlspecialchars($detail), "
\ n ";
}
if ($ die) {
умереть;
}
}