Php 将数据插入MySql表异常
我正在使用此代码在MySql表中插入一些值:Php 将数据插入MySql表异常,php,mysql,apache,windows-xp,Php,Mysql,Apache,Windows Xp,我正在使用此代码在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 messa
<?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();
?>
尝试以下方法连接到数据库:
$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(),它将告诉您它在哪里失败以及为什么要连接到数据库:
$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(),它将告诉您它在哪里失败,以及任何mysql_*函数由于各种原因失败的原因。您必须检查返回值,如果函数指示错误(通常通过返回FALSE
),您的脚本必须做出适当的反应。
mysql\u error($link)和mysql\u errno($link)可以为您提供更详细的原因信息。但您不希望仅向任意用户显示所有详细信息,请参阅
如果不将mysql_connect()返回的连接资源传递给后续的mysql_*函数调用,php将假定最后成功建立的连接。你不应该依赖它;最好将链接资源传递给函数。a) 如果您每页都有多个连接,您必须通过它。b) 如果没有有效的db连接,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;
}
}
任何mysql_*函数都可能由于各种原因而失败。您必须检查返回值,如果函数指示错误(通常通过返回FALSE
),您的脚本必须做出适当的反应。
mysql\u error($link)和mysql\u errno($link)可以为您提供更详细的原因信息。但您不希望仅向任意用户显示所有详细信息,请参阅
如果不将mysql_connect()返回的连接资源传递给后续的mysql_*函数调用,php将假定最后成功建立的连接。你不应该依赖它;最好将链接资源传递给函数。a) 如果您每页都有多个连接,您必须通过它。b) 如果没有有效的db连接,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;
}
}
在我看来,允许应用程序以root用户身份登录数据库并将明文密码放在页面本身并不明智。httpd的错误日志文件中是否有相关内容?您可能希望为该测试同时增加php和httpd的日志级别。请参阅:和@user398920,转到您的用户配置文件,查看您以前的问题,并选择适当的答案(单击最佳答案上的绿色复选标记)。您是否检查了apache/php错误日志?运行telnet localhost 3306
时会发生什么?您可以使用您的用户和密码登录mysql吗?apache错误日志文件的输出是什么?我认为允许应用程序以root用户身份登录数据库并将明文密码放在页面本身并不明智。httpd的错误日志文件中是否有相关内容?您可能希望为该测试同时增加php和httpd的日志级别。请参阅:和@user398920,转到您的用户配置文件,查看您以前的问题,并选择适当的答案(单击最佳答案上的绿色复选标记)。您是否检查了apache/php错误日志?运行telnet localhost 3306
时会发生什么?您可以使用您的用户和密码登录mysql吗?apache错误日志文件的输出是什么?+1很好地展示了如何使用或死亡以及mysql错误用法,但您也应该使用连接php mysql错误,选择数据库也是如此。+1很好地展示了如何使用或死亡以及mysql错误用法,但您也应该使用连接php mysql错误,同样适用于数据库选择数据库。@user398920:虽然您写道这只是一个测试脚本,但请记住sql注入(并防止它们),请参阅;和@user398920:虽然您写道这只是一个测试脚本,但请记住sql注入(并防止它们),请参阅,和