相关疑难解决方法(0)

PHP PDO准备插入 - 不插入数据并且不显示错误

这个问题让我发疯,我尝试了一切.是不是给我任何错误,但它也没有向数据库插入任何内容.数据库连接很好,应该没有拼写错误.请看一下,看看你是否能找到问题:

$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)

php mysql pdo insert

4
推荐指数
1
解决办法
6948
查看次数

php PDO插入不起作用,没有错误

我有这种代码的和平,应该将记录插入到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)

php pdo

4
推荐指数
1
解决办法
1万
查看次数

PDO故障排除:执行预准备语句时未捕获错误

我使用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显示或捕获这些类型的数据库错误?

php mysql pdo try-catch

3
推荐指数
1
解决办法
1万
查看次数

什么时候应该使用 PDO 使用 `try` 和 `catch` 来准备和执行?

我已经使用 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 exception

3
推荐指数
1
解决办法
276
查看次数

PDO :: Query()返回false

我正在尝试在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 mysql pdo pdostatement

2
推荐指数
1
解决办法
1万
查看次数

致命错误:调用成员函数bindParam()

我正在学习使用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()

我一遍又一遍地检查,似乎无法找到这个代码有什么问题,我搜索了这个错误但不幸的是我找到的答案都没有用.任何帮助将不胜感激,这可能是一个简单的菜鸟错误.

php

1
推荐指数
1
解决办法
7531
查看次数

PDO - 在非对象上调用成员函数fetch()

我的错误:

( ! ) 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

这是我的数据库:

http://d.pr/i/vcod

这是我的代码:

$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', …
Run Code Online (Sandbox Code Playgroud)

php database pdo fetch fatal-error

1
推荐指数
1
解决办法
2万
查看次数

截断表不起作用

我正在开发一个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,请原谅我这是一个非常基本的问题.

php mysql pdo truncate

1
推荐指数
1
解决办法
9621
查看次数

PDO INSERT查询500服务器错误

我是新手使用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)

php mysql pdo

0
推荐指数
1
解决办法
848
查看次数