【发布时间】:2015-07-20 03:50:35
【问题描述】:
祝大家今天好
我的 php 和 mysql 有问题。一切正常,直到我向我的数据库中添加了新内容,现在当我点击创建时,我的图像给了我错误。
以下是我遇到的错误:
注意:未定义的变量:C:\wamp\www\SA-Property 中的 conn Finder\create.php 在第 140 行
致命错误:在非对象上调用成员函数 lastInsertId() 在 C:\wamp\www\SA-Property Finder\create.php 第 140 行
这是我的代码:
//START IMAGES
// insert data
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO properties (title,description,area,map,status,type,bedrooms,bathrooms,parking,garage,garden,pool,price,pets,agentnum,agentemail) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($title,$description,$area,$map,$status,$type,$bedrooms,$bathrooms,$parking,$garage,$garden,$pool,$price,$pets,$agentnum,$agentemail));
Database::disconnect();
}
**$last_id = $pdo->lastInsertId();**
$directory="uploads/";
$directoryagents="agents/";
$a=0;
foreach ($_FILES['agentfile']['name'] as $nameFile) {
$ext = pathinfo($nameFile, PATHINFO_EXTENSION);
if(is_uploaded_file($_FILES['agentfile']['tmp_name'][$a]))
{
move_uploaded_file($_FILES['agentfile']['tmp_name'][$a], $directoryagents.$last_id."_".$a.".".$ext);
}
$fileandpath = $directoryagents.$last_id."_".$a.".".$ext;
$pdo1 = Database::connect();
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql1 = "UPDATE properties SET agentimageurl=? WHERE PropertyId=?";
$q1 = $pdo1->prepare($sql1);
$q1->execute(array($fileandpath,$last_id));
Database::disconnect();
}
foreach ($_FILES['file']['name'] as $nameFile) {
$ext = pathinfo($nameFile, PATHINFO_EXTENSION);
if(is_uploaded_file($_FILES['file']['tmp_name'][$a]))
{
move_uploaded_file($_FILES['file']['tmp_name'][$a], $directory.$last_id."_".$a.".".$ext);
}
$fileandpath = $directory.$last_id."_".$a.".".$ext;
$pdo1 = Database::connect();
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql1 = "INSERT INTO images (propertyid,imageurl) values(?, ?)";
$q1 = $pdo1->prepare($sql1);
$q1->execute(array( $last_id,$fileandpath));
Database::disconnect();
$a++;
}
header("Location: admin_list.php");
}
这是第 140 行:
$last_id = $pdo->lastInsertId();
我只是不明白它工作正常,似乎看不出我的问题出在哪里。
【问题讨论】:
-
我认为问题在于,当 $valid 不正确时,您不会创建 $pdo 对象,因此您不能使用该方法。
-
感谢您的回复。那么我应该使用什么方法呢?我对这一切有点陌生哈哈仍在学习
-
我添加了一个答案。如果您必须执行多个操作,我建议您避免创建不同的 PDO 对象和多次连接/断开连接。
-
但是我如何得到它然后单独加载?
-
你应该用OOP代码替换你的程序代码,但如果你刚开始编程,这并不那么简单。
标签: php html mysql database pdo