Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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,我正试图让一个旧的PHP系统在我的新网站上运行。然而,为了让它工作,一切都必须使用PDO而不是常规的MySQL查询。我只是想让它变得有趣,我根本不是专家,只是在试验。然而,我似乎找不到解决问题的办法 我只是不断得到错误:致命错误:未捕获错误:调用成员函数query() 我已经用//错误行标记了这些行// 原始代码: <?php include("connect.php"); $day = $_GET['week']; if($_GET['week'] == "

我正试图让一个旧的PHP系统在我的新网站上运行。然而,为了让它工作,一切都必须使用PDO而不是常规的MySQL查询。我只是想让它变得有趣,我根本不是专家,只是在试验。然而,我似乎找不到解决问题的办法

我只是不断得到错误:致命错误:未捕获错误:调用成员函数query()

我已经用//错误行标记了这些行//

原始代码:

<?php
include("connect.php");
$day = $_GET['week'];

if($_GET['week'] == ""){
    $day = date("l");
    $_GET['week'] = date("l");
}

$slot = mysql_fetch_array(mysql_query("SELECT * FROM rp_timetable WHERE day = '$day'"));

function outit($time, $num){
    global $day, $slot;
    $info = mysql_fetch_array(mysql_query("SELECT * FROM rp_users WHERE id = '".$slot[$num]."'"));
    if($slot[$num] == ""){ 
        $book[$num] = "OPEN SLOT"; 
    }else{
        $book[$num] = "<b>DJ ".$info['djname']."</b>";
    }
    if($num%2){
        echo "<tr class='colour'><td width='150px' align='center'>$time</td><td width='150px' align='center'>".$book[$num]."<td></tr>";
    }else{
        echo "<tr><td width='150px' align='center'>$time</td><td width='150px' align='center'>".$book[$num]."<td></tr>";
    }
}

echo "<div id='timetable_pub'><center>";
$result = mysql_query("SELECT sitename FROM rp_data");
while($row = mysql_fetch_assoc($result)) {
echo "<u>".$row['sitename']." Radio Timetable</u><p>";
}
echo "<h1>-You are currently viewing ";
echo "$day";
echo "'s timetable-</h1><p>";
echo "<a href='?week=Monday'>Monday</a> | <a href='?week=Tuesday'>Tuesday</a> | <a href='?week=Wednesday'>Wednesday</a> | <a href='?week=Thursday'>Thursday</a> | 
<a href='?week=Friday'>Friday</a> | 
<a href='?week=Saturday'>Saturday</a> | <a href='?week=Sunday'>Sunday</a><br><hr><br>
<table border='0' valign='middle' align='center'><tr>
<td width='150px' align='center'><u>Time</u></td>
<td width='150px' align='center'><u>DJ Booked</u><td></tr>";

outit('12:00 - 01:00 AM', 1);
$i = 2;
while($i <= 12){
    $start_time = $i - 1;
    $end_time = $i;
    if(strlen($start_time) == 1){$start_time = "0".$start_time;}
    if(strlen($end_time) == 1){$end_time = "0".$end_time;}
    $full_time = "$start_time:00 - $end_time:00 AM";
    outit($full_time, $i);
    $i++;
}
outit('12:00 - 01:00 PM', 13);
$i = 14;
while($i <= 24){
    $start_time = $i - 13;
    $end_time = $i - 12;
    if(strlen($start_time) == 1){$start_time = "0".$start_time;}
    if(strlen($end_time) == 1){$end_time = "0".$end_time;}
    $full_time = "$start_time:00 - $end_time:00 PM";
    outit($full_time, $i);
    $i++;
}

echo "</table>
</center><p></div>";
?>

我已经展示了一段使用pdo for php连接数据库的代码在您的例子中,$day不能直接在sql查询中传递,因为sql不接受该语法,希望它有助于理解

try {
    $connect = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $connect->prepare("SELECT * FROM rp_timetable WHERE day =?");
    $stmt->bindParam(1,$day,PDO::PARAM_STR);
    $stmt->execute();
    $response = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($response);  
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}

$dbh
不在您的
outit
功能范围内。您在哪里定义过
$dbh
?你期望它是什么?为什么?@David可能是在connect.php中,它包含在top@anthony_718:不在产生错误的代码中,它不是。即使它被包括在内,这仍然不能回答它是什么或者为什么它应该有一个名为
query
的方法。还有,你为什么在那里有
die
?没用
try {
    $connect = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $connect->prepare("SELECT * FROM rp_timetable WHERE day =?");
    $stmt->bindParam(1,$day,PDO::PARAM_STR);
    $stmt->execute();
    $response = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($response);  
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}