这个问题让我发疯,我尝试了一切.是不是给我任何错误,但它也没有向数据库插入任何内容.数据库连接很好,应该没有拼写错误.请看一下,看看你是否能找到问题:
$err = array();
if (isset($_POST['submit'])) {
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$date = "2012-02-02 02:02:02"; //Example
$uploader_name = $_POST['uploader_name'];
// Validation happens here...
if (empty($err)) {
$host = "host";
$dbname = "db";
$user = "user";
$pass = "pass";
try {
$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$sql = "INSERT INTO `table` (`ip`, `date`, `uploader_name`)
VALUES (:ip, :date, :uploader_name)";
$stmt = $dbh->prepare($sql);
# the data we want to insert
$params = array(
':ip' => $ip,
':date' => $date,
':uploader_name' => $uploader_name
); …Run Code Online (Sandbox Code Playgroud) 我有这种代码的和平,应该将记录插入到mysql数据库中:
$sql = "INSERT INTO connections (column1, column2, column3, column4, column5, column6, column7) VALUES (?, ?, ?, ?, ?, ?, ?)')";
$stmt = $pdo->prepare($sql);
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($pdo->errorInfo());
}
$stmt->execute(array('wer','wer','wer','2','wer','wer','wer'));
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,并且记录未显示在表格中.怎么可能出错?
更新:
由于以下答案,这是完整的工作代码:
$sql = "INSERT INTO connections (column1, column2, column3, column4, column5, column6, column7) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($pdo->errorInfo());
}
$stmt->execute(array('wer','wer','wer','2','wer','wer','wer'));
Run Code Online (Sandbox Code Playgroud) 我使用PDO遇到了一个问题,因为没有发现错误.
代码很简单,工作得很好,我只需要包含一个样本以避免混淆:
$sql = 'INSERT INTO somedatetable (something)
VALUES (:something)
ON DUPLICATE KEY UPDATE something=:something';
$values = array(":something" => $something);
try {
$stmt = $dbh->prepare($sql);
$stmt->execute($values);
} catch (PDOException $e) {
echo "Error: " . $e->getMessage() . "<br />\n";
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但是当处理新模块时,我遇到了一个问题,即没有添加或修改记录,也没有发现错误.
$stmt返回,false但我没有线索为什么或如何找到错误.
解决方案最后很简单,我使用的是一个对表没有写权限的有限MySQL用户.使用mysql时,这些错误总会立即显示,但是使用PDO我不知道如何找到它们.
如何让PHP/PDO显示或捕获这些类型的数据库错误?
我已经使用 PDO 几年了,但我从未充分研究过何时应该使用try和准备和执行catch。
我的理解是,当数据可能包含用户输入时,您应该使用tryand 。catch
所以这个例子的代码是安全的:
public function getDetails($filename, $what){
$query = $this->handler->prepare('SELECT * FROM videos WHERE v_fileName = :v_fileName');
try{
$query->execute([
':v_fileName' => $filename
]);
}catch(PDOException $e){
return $e->getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
$filename在此示例中,内容来自 URL。
例如,当没有从 URL 中获取任何内容时,它也会完全保存:
$query = $this->handler->prepare('SELECT * FROM videos WHERE u_id = :u_id ORDER BY v_id LIMIT :climit,1');
$query->execute([
':u_id' => $this->user->getChannelId($userid),
':climit' => $optional[1]
]);
$fetch = $query->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
我对准备陈述的理解是否正确?如果不正确,我该怎么做?
我正在尝试在PHP中学习和使用PDO.我在query()方法中遇到了一个问题.
我试图用来$sth = $db->query("SELECT * FROM titles ORDER BY RAND() LIMIT 1");随机选择一个网站的标题,但由于某种原因,$sth总是假的.它的工作原理,当我用prepare()和execute(),但我试图找到什么是错的query().
这是我正在调用的整个函数:
function getTitle($db)
{
if($db)
{
$db->exec("USE " . $dbsite);
$sth = $db->query("SELECT * FROM titles ORDER BY RAND() LIMIT 1");
$title = $sth->fetch(PDO::FETCH_ASSOC);
$db->exec("UPDATE titles SET count = count + 1 WHERE id = " . $title['id']);
return $title['title'];
}
else
return 'Home - Database Offline';
}
Run Code Online (Sandbox Code Playgroud) 我正在学习使用PHP并且有一个简单的问题.
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$db = new PDO('sqlite:/usr/users2/mieic2009/ei09072/public_html/TP1/Delicious /Database.db');
$a = $_GET['linkRef'];
$b = $_GET['tagToAdd'];
$checkIdLink = $db->prepare('SELECT idLink FROM Links WHERE nome_L = :link_n;');
$checkIdLink->bindParam(':link_n', $a, PDO::PARAM_STR);
$checkIdLink->execute();
$linkID = $checkIdLink->fetch();
$insertLink = $db->prepare('INSERT INTO Tags (nome_T, idLink) VALUES (:addTag, :link_id)');
$insertLink->bindParam(':addTag', $b, PDO::PARAM_STR);
$insertLink->bindParam(':link_id', $linkID, PDO::PARAM_INT);
$insertLink->execute();
echo 'Tag added to the specified link!';
?>
Run Code Online (Sandbox Code Playgroud)
此代码应将标记添加到数据库中的现有链接,但是我收到此错误
致命错误:在第9行的/usr/users2/mieic2009/ei09072/public_html/TP1/Delicious/addTag.php中调用非对象上的成员函数bindParam()
我一遍又一遍地检查,似乎无法找到这个代码有什么问题,我搜索了这个错误但不幸的是我找到的答案都没有用.任何帮助将不胜感激,这可能是一个简单的菜鸟错误.
我的错误:
( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDO\index.php on line 13
我的代码:
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'learnpdo'
);
$db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$query = $db->query("SELECT articles . title FROM articles");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['title'];
}
Run Code Online (Sandbox Code Playgroud)
我知道有很多这样的问题,但没有一个答案似乎有效.
谢谢
编辑:
由于以下所有人,以上是固定的.:)现在我收到另一个错误:
Notice: Undefined index: id in C:\wamp\www\PDO\index.php on line 7
这是我的数据库:
这是我的代码:
$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', …Run Code Online (Sandbox Code Playgroud) 我正在开发一个PHP脚本,用于将一些数据库行从一个DB导出/导入到另一个DB.
到目前为止,我得到了这个函数,以确保在将新行放入其中之前目标表为空:
function truncateTable($conn, $tblname)
{
echo "Truncating..";
$query = $conn->exec("TRUNCATE TABLE $tblname") or die("failed!");
echo "Truncated table $tblname!";
}
Run Code Online (Sandbox Code Playgroud)
但是,这给了我这个错误:
Call to a member function exec() on a non-object
Run Code Online (Sandbox Code Playgroud)
传递给函数的connectionstring $conn如下所示:
$con2 = new PDO("mysql:host=$dbs2;dbname=$dbd2",$dbu2,$dbp2);
Run Code Online (Sandbox Code Playgroud)
我把这个函数称为:
truncateTable($con2, "users");
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我只是在学习PDO,请原谅我这是一个非常基本的问题.
我是新手使用PDO,我在提交表单时收到http 500服务器错误.
带有处理代码的php页面在正确的文件夹中,所以我不知道它为什么会抛出500错误.
没有任何网址重写.
这是我的代码:
try {
$dbh = new PDO("mysql:host=$hostname;dbname=crm",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
$stmt = $db->prepare("INSERT INTO testdrives (forename, surname,phone,email,add1,add2,add3,city,county,postcode,car,date) VALUES (:forename, :surname,:phone,:email,:add1,:add2,:add3,:city,:county,:postcode,:car,:date)");
$stmt->bindParam(':forename', $_POST['forename']);
$stmt->bindParam(':surname', $_POST['surname']);
$stmt->bindParam(':phone', $_POST['phone']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':add1', $_POST['add1']);
$stmt->bindParam(':add2', $_POST['add2']);
$stmt->bindParam(':add3', $_POST['add3']);
$stmt->bindParam(':city', $_POST['city']);
$stmt->bindParam(':county', $_POST['county']);
$stmt->bindParam(':postcode', $_POST['postcode']);
$stmt->bindParam(':car', $_POST['car']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->execute();
if ($dbh->query($sql)) {
echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
}
else{
echo "<script type= 'text/javascript'>alert('Data not successfully Inserted.');</script>";
}
$dbh = null;
}
catch(PDOException $e)
{ …Run Code Online (Sandbox Code Playgroud)