PHP中的MySQL查询

PHP中的MySQL查询,php,mysql,mysqli,subquery,Php,Mysql,Mysqli,Subquery,我试图找到最有效的方式来查询查询结果,而我在网上找到的每一个解决方案都会产生1064错误。我不明白我做错了什么 我尝试的最新迭代如下所示: $sql = "SELECT keys.* FROM (SELECT * FROM calendar WHERE event_key LIKE '".$eventKey."%') keys WHERE event='".$eventTitle."'"; 我之前试过的是: $sql = "SELECT *(events) FROM (SELECT * AS

我试图找到最有效的方式来查询查询结果,而我在网上找到的每一个解决方案都会产生1064错误。我不明白我做错了什么

我尝试的最新迭代如下所示:

$sql = "SELECT keys.* FROM (SELECT * FROM calendar WHERE event_key LIKE '".$eventKey."%') keys WHERE event='".$eventTitle."'";
我之前试过的是:

$sql = "SELECT *(events) FROM (SELECT * AS events FROM calendar WHERE event_key LIKE '201974000') WHERE event='Event Name' AS lineitems";
我在phpMyAdmin中的最后一个错误是:

SQL查询:选择*中的事件选择*作为日历中的事件 其中,像“201974000”这样的事件键作为行项限制为0,25 MySQL说:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 “近”事件从日历中选择*作为事件,其中事件\u键 比如1号线的201974000

我想做的是像这样查询我的数据库:

$sql = "SELECT * FROM calendar WHERE event_key LIKE '".$eventKey."%'";
…然后按如下方式查询这些结果:

$sql = "SELECT * FROM <<RESULTS>> WHERE event='".$eventTitle."'";
以下是完整的PHP文件:


所有的回显行都是为了测试目的,只是为了跟踪代码的执行。

我认为在这种情况下运行子查询是多余的。因为您只想在第一次查询的结果上查找where event='$eventTitle',这就像是说:

$sql = "SELECT * FROM calendar WHERE `event_key` LIKE '%$eventKey%' AND `event` = '$eventTitle'";
注意:注意我没有使用点连接;因为围绕整个查询的双引号允许在其中使用PHP变量


您的上一次尝试接近正确,但您不需要打开支架,即使您想使用它,也没有关闭支架。

这似乎不正确。当我删除句点并在浏览器中运行它时,它会告诉我>>此页面不工作,当前无法处理此请求。HTTP错误500请共享您尝试运行的修订后的查询。然而,“双引号”的优势在PHP中已经存在很长时间了。我将分享上面的整个PHP文档。当我将代码行减去$sql=粘贴到phpMyAdmin中并用实际文本替换变量时,代码执行得非常完美。当我通过访问web上的php文件来运行它时,它无法正确查询数据库。我认为您应该粘贴它。问题可能在另一条线上。哦。。。好的,太好了!但我认为,为了正确地报告错误并避免在盲目环境中调试时遇到麻烦,请在php.ini文件中打开“显示错误”。还有,你可能想用“试着抓住”。。。最重要的是,很高兴你发现了错误。不带句点的双引号也是一种正确的方法。请参阅sql注入以及准备和绑定查询的重要性。顺便说一句,客户端筛选数组是一个简单的过程。下面是一个我特别喜欢的示例。。。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
    <?php

    function imageCorrection($string){
        $find = array("file/d/","/view?usp=drive_web");
        $replace = array("uc?id=","");
        $string = str_replace($find,$replace,$string);
        return $string;
    }

    function seoUrl($string){
        $src = 'àáâãäçèéêëìíîïñòóôõöøùúûüýÿßÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝ';
    $rep = 'aaaaaceeeeiiiinoooooouuuuyysAAAAACEEEEIIIINOOOOOOUUUUY';
        $find = array("the","and");
        $replace = array("");
        $string = strtr(utf8_decode($string),utf8_decode($src),$rep);
        $string = strtolower($string);
        $string = str_replace("");
        $string = str_replace($find,$replace,$string);
        $string = preg_replace("/[^a-z0-9\s._-]/","",$string);
        $string = preg_replace("/[\s._-]+/"," ",$string);
        $string = preg_replace("/[\s]/","-",$string);
        $string = "/events/".$string;
        if($string = "/events/"){
            $string = null;
        }
        return $string;
    }

    $year = date('Y');
    $lastYear = date('Y',strtotime("last year"));
    $nextYear = date('Y',strtotime("next year"));
    date_default_timezone_set('America/Anchorage');
    $eventTimeZone = new DateTimeZone("America/Anchorage");
    $currentTime = new DateTime("now",$eventTimeZone);
    $eventTimeOffset = $eventTimeZone->getOffset($currentTime);
    use Sabre\VObject;
    include '../../vendor/autoload.php';

    $vcalendar = VObject\Reader::read(fopen('https://calendar.google.com/calendar/ical/i8j5d94tpgnnqu6h8q3mt6uc48%40group.calendar.google.com/public/basic.ics','r'));
    $vcalendar = $vcalendar->expand(new DateTime('2018-01-01'), new DateTime('2020-12-31'));

    $servername = "localhost";
    $username    = "#########";
    $password    = "#########";
    $dbname  = "#########";

    // Create connection
    $connection = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($connection->connect_error){
        die("Connection to calendar failed: " . $connection->connect_error);
    }

    foreach($vcalendar->VEVENT as $event){
        $eventTitle = $event->SUMMARY;
        $eventStart = strtotime($event->DTSTART);
        $eventEnd   = strtotime($event->DTEND);
        $eventDesc  = $event->DESCRIPTION;
        $eventLocat = $event->LOCATION;
        $eventImage = imageCorrection($event->ATTACH);
        $eventKey   = date('YzB',$eventStart);
        $eventURL   = seoUrl($eventTitle);
        echo $eventKey."<br>";
        echo $eventTitle."<br>";
        echo $eventURL."<br>";
        echo $eventDesc."<br>";
        echo $eventLocat."<br>";
        echo $eventImage."<br>";
        echo date('m-d-Y h:ia',$eventStart)."<br>";
        echo date('m-d-Y h:ia',$eventEnd)."<br>";


        $sql = "SELECT * FROM calendar WHERE event_key LIKE '".$eventKey."%' AND event='".$eventTitle."'";
        $update = "UPDATE calendar SET url='".$eventURL."',image='".$eventImage."',description='".$eventDesc."',location='".$eventLocat."',start_date='".$eventStart."',end_date='".$eventEnd."',color='FFB819' WHERE (event_key LIKE '".$eventKey."%' AND event='".$eventTitle."')";
        $insert = "INSERT INTO calendar VALUES ('".$eventNum."', '".$eventTitle."', '".$eventURL."', '".$eventImage."', '".$eventDesc."', '".$eventLocat."', '".$eventStart."', '".$eventEnd."', 'FFB819')";

        $query = $connection->query($sql);
        echo "Query Results: ".$query->num_rows."  EventKey: ".$eventKey."  ".$eventTitle."<br>";
        if($query->num_rows > 0){
            echo "Rows: ==".$query->num_rows."<br>";
            $updateQUERY = $connection->query($update);
        }else{
            echo "Rows: #".$query->num_rows."<br>";
            $key = "SELECT * FROM calendar WHERE event_key LIKE '".$eventKey."%'";
            $query2 = $connection->query($key);
            if($query2->num_rows > 0){
                $eventNum = $query2->num_rows;
                $eventNum++;
                echo "Query 2 Rows: ##".$eventNum."<br>";
            }else{
                $eventNum = 0;
                echo "Query 2 Rows: #".$eventNum."<br>";
            }
            if($eventNum < 10){
                $eventNum = "00".$eventNum;
            }elseif($eventNum < 100){
                $eventNum = "0".$eventNum;
            }
            $eventNum = $eventKey.$eventNum;
            echo "Event#: ".$eventNum."<br>";
            $insertQUERY = $connection->query($insert);
        }
        echo "==============================================================================<br>";
    }


    ?>
</body>
</html>
$sql = "SELECT * FROM calendar WHERE `event_key` LIKE '%$eventKey%' AND `event` = '$eventTitle'";