Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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查询过滤器_Php_Mysql_Pdo - Fatal编程技术网

Php 基于其他行的PDO查询过滤器

Php 基于其他行的PDO查询过滤器,php,mysql,pdo,Php,Mysql,Pdo,这是我的代码: //Connects to Database if ($_SERVER["REQUEST_METHOD"] == "POST") try { $dbh = new PDO('dbconnection'); foreach ($dbh->query('SELECT * from table' ) as $row) { $instructor = ($_POST["name"]);

这是我的代码:

//Connects to Database
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    try
    {
        $dbh = new PDO('dbconnection');
        foreach ($dbh->query('SELECT * from table' ) as $row)
        {
            $instructor = ($_POST["name"]);
            //Loads Certificate Template
            $jpg_image = imagecreatefromjpeg('cert.jpg');
            $color = imagecolorallocate($jpg_image, 82, 122, 124);
            //Sets Font
            $font_path = 'name.ttf';
            //Calls first name from database
            $firstname = $row['fname'];
            //Makes entire first name lower case
            $firstnamelower = strtolower($firstname);
            $firstnameucfirst = ucfirst($firstnamelower);
            //Calls Last Name From Database
            $lastname = $row['lname'];
            $lastnamelower = strtolower($lastname);
            $lastnameucfirst = ucfirst($lastnamelower);
            $name = $firstnameucfirst . ' ' . $lastnameucfirst;
            $font_size = 75;
            imagettftext($jpg_image, $font_size, 0, 810, 530, $color, $font_path, $name);
            imagettftext($jpg_image, 40, 0, 375, 945, $color, $font_path, $instructor);
            imagejpeg($jpg_image, 'images/' . $name . '.jpg', 50);
            imagedestroy($jpg_image);
        }
        $dbh = null;
    }
    catch (PDOException $e)
    {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
    echo "All certificates have been created."

    ?>
//连接到数据库
如果($\服务器[“请求\方法”]=“发布”)
尝试
{
$dbh=新PDO('dbconnection');
foreach($dbh->query('SELECT*from table')作为$row)
{
$讲师=($_POST[“name”]);
//加载证书模板
$jpg_image=imagecreatefromjpeg('cert.jpg');
$color=imagecolorallocate($jpg_图像,82122124);
//设置字体
$font_path='name.ttf';
//从数据库中调用名字
$firstname=$row['fname'];
//使整个名字小写
$firstnamelower=strtolower($firstname);
$firstnameucfirst=ucfirst($firstnamelower);
//从数据库中调用姓氏
$lastname=$row['lname'];
$lastnamelower=strtolower($lastname);
$lastnameucfirst=ucfirst($lastnamelower);
$name=$firstnameucfirst.'.$lastnameucfirst;
$font_size=75;
imagettftext($jpg_image,$font_size,0810530,$color,$font_path,$name);
imagettftext($jpg_图像,40,0375945,$color,$font_路径,$讲师);
imagejpeg($jpg_image,'images/.$name.'.jpg',50);
imagedestroy($jpg_image);
}
$dbh=null;
}
捕获(PDO$e)
{
打印“错误!:”$e->getMessage()。“
”; 模具(); } echo“已创建所有证书。” ?>
所以我正在尝试更改它,以便只处理满足其他要求的图像。基本上,我需要使用WHERE column_name操作符值;但当我这样做的时候,我会发现错误,我已经在谷歌上搜索过了,我真的不明白他们在说什么。使用pdo是否还需要一些代码来实现这一点


这就是我收到的错误警告:为foreach()提供的参数无效。

错误来自以下事实:$pdo->查询在失败时返回false,而不是空数组

foreach需要一个数组

调整您的代码:

$dbh = new PDO('dbconnection');

// Throw exceptions on errors
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

// To make it easier to debug
$sql = 'SELECT * from table';

// To allow check for failuer
$rows = $dbh->execute($sql);

if ($rows === false) ... oopsie

foreach($rows as $row) ...

然后让您的查询开始工作。考虑使用MySQL直接检查你的SQL。< /P>你没有设置PDO来抛出异常,所以它只会在连接失败上抛出一个。在查询失败时,默认情况下它会自动出错,这可能就是您在这里看到的。建立连接后,打开“ERRMODE\U EXCEPTION”,您将完全了解出了什么问题。@MichaelBerkowski我这样做了,但没有做任何更改,仍然抛出相同的错误