Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在外部PHP文件中使用PDO连接mysql数据库_Php_Mysql_Pdo_Mysqli_Connection - Fatal编程技术网

在外部PHP文件中使用PDO连接mysql数据库

在外部PHP文件中使用PDO连接mysql数据库,php,mysql,pdo,mysqli,connection,Php,Mysql,Pdo,Mysqli,Connection,我有一个Index.php,它有一个表单,用于在提交表单时获取用户详细信息。它将数据发送到一个新的program.php,以便在program.php中进行验证。我链接了db.php,在其中我连接到了数据库,db.php的代码如下所示: <?php $link=mysql_connect('localhost', 'root', '') or die ("mysql_connect_error()"); $dbselect=mysql_select_db('test',$l

我有一个Index.php,它有一个表单,用于在提交表单时获取用户详细信息。它将数据发送到一个新的program.php,以便在program.php中进行验证。我链接了db.php,在其中我连接到了数据库,db.php的代码如下所示:

<?php
    $link=mysql_connect('localhost', 'root', '') or die ("mysql_connect_error()");
    $dbselect=mysql_select_db('test',$link) or die ("Error while connecting the database");
?>
<?php
$hostname='localhost';
$username='root';
$password='';

try
{
    $dbh = new PDO("mysql:host=$hostname;dbname=test",$username,$password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>
我得到的更新错误

注意:在第6行的B:\XAMPP\htdocs\test\program.php中使用未定义的常量test\u sign\u-up-假定为“test\u sign\u”

注意:未定义索引:test\u在第6行的B:\XAMPP\htdocs\test\program.php中注册

注意:在第32行的B:\XAMPP\htdocs\test\program.php中使用未定义的常量test\u login-假定为“test\u login”

注意:在第35行的B:\XAMPP\htdocs\test\program.php中使用了未定义的常量id-假定为'id'

注意:在第36行的B:\XAMPP\htdocs\test\program.php中使用未定义的常量id\u pass-假定为“id\u pass” 未选择任何数据库 警告:mysql\u fetch\u array()希望参数1是资源,布尔值在第41行的B:\XAMPP\htdocs\test\program.php中给出

警告:mysql_num_rows()希望参数1是资源,布尔值在第42行的B:\XAMPP\htdocs\test\program.php中给出

注意:在第56行的B:\XAMPP\htdocs\test\program.php中使用了未定义的常量id-假定为'id'

注意:在第57行的B:\XAMPP\htdocs\test\program.php中使用未定义的常量id\u pass-假定为“id\u pass” 不正确的细节 注意:在第73行的B:\XAMPP\htdocs\test\program.php中使用未定义的常量注销-假定为“注销”


注意:未定义索引:在代码第73行的B:\XAMPP\htdocs\test\program.php中注销,首先创建到数据库的连接,然后将其设置为null。
此后,无论何时尝试访问
$dbh
对象,它都将null

$dbh = new PDO("mysql:host=$hostname;dbname=test",$username,$password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh = null;  // <= Right here.
如果您在转换代码时遇到问题,我建议您阅读中的
PDO


进一步建议:

当您包含这样一个文件时,每次脚本运行只需要包含一次,最好确保只包含一次。这可以通过使用
include_once
关键字来完成,而不仅仅是
include
。现在,如果您使用include,这将包括脚本(如果可能),如果它不能,它将继续运行脚本,并且当您尝试使用文件中设置的变量时,脚本将崩溃。

在本例中,我建议使用
require
(或者更确切地说是
require\u once
)关键字,而不是使用
include
。其中将包括文件,如果无法执行,则停止脚本执行并显示错误消息(如果您有错误报告)。

您不仅需要更改db.php,还需要更改代码中的所有查询。并始终使用准备好的语句将变量传递给查询。否则PDO不会保护你免受注射


在我写这篇文章的时候,它仍然是不完整的,但可以提供您可以从中开始的基本知识。

您会遇到什么错误?
$hostname='localhost
缺少
这只是这段代码中的一个输入错误,还是您复制了真实的代码?@Jite抱歉,在添加被删除的空格时,错误地更新了代码code@donald123我有很多错误,我无法复制粘贴到这里,连接没有错误,但从数据库中获取文件,我猜连接是可以工作的,但由于它是在外部完成的,所以itI有一些问题,我尝试过这样做,但问题仍然是相同的。您如何查询数据库?你会犯什么错误?在您展示的代码中,这是我能注意到的唯一问题,它可能存在于包含
db.php
文件的文件中。我现在已经更新了我的代码是的,正如我所提到的,您不能调用您以前的mysql_*查询并期望它们工作(特别是当您不再像以前那样创建mysql连接时),您必须将所有查询更改为使用
PDO
$dbh
对象。
$dbh = new PDO("mysql:host=$hostname;dbname=test",$username,$password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh = null;  // <= Right here.
// Earlier code using `mysql_* API`:
$sql="select * from admin_database where id = '$id' and id_pass= '$id_pass'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);


// Would look something like this using PDO:
$statement = $dbh->prepare('SELECT * FROM admin_database WHERE id =:id AND id_pass =:idpass');
// Here you can either use the bindParam method, or pass the params right into the execute call:
$statement->execute(array('id' => $id, 'idpass' => $id_pass);
$row = $statement->fetch();