我正在使用此代码在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”)语句导致它。数据库是创建的,也是表...
我在windows xp sp 2上运行php 5.3和mysql 5.1。
欢迎任何想法......
...谢谢
答案 0 :(得分:2)
任何mysql_ *函数都可能因各种原因而失败。您必须检查返回值,如果函数指示错误(通常通过返回FALSE
),您的脚本必须做出适当的反应。
mysql_error($ link)和mysql_errno($ link)可以为您提供有关原因的更详细信息。但是您不希望向任何用户显示所有细节,请参阅CWE-209: Information Exposure Through an Error Message。
如果未将mysql_connect()返回的连接资源传递给后续的mysql_ *函数调用,则php假定上次成功建立连接。你不应该依赖它;更好地将链接资源传递给函数。 a)如果每页有多个连接,则无论如何都必须通过。 b)如果没有有效的数据库连接,php-mysql模块会尝试建立默认连接,这通常不是你想要的;它只需要更多的时间来失败..再次。
<?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;
}
}
答案 1 :(得分:1)
尝试连接数据库:
$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(),它会告诉你失败的原因以及原因