php
  • mysql
  • 2012-07-20 177 views 0 likes 
    0

    这是我第一个php的第一名。如果我有什么问题,请帮我用代码。因为我刚开始学习。我尝试了这么多的教程,但我无法打开什么即时通讯做错了。Where子句php无法正常工作

    <?php 
    
    include "db_config.php"; 
    
    $query = mysql_query("SELECT * FROM places WHERE place_id ='".mysql_real_escape_string($_REQUEST[place_id])."'"); 
    
    while($e=mysql_fetch_assoc($query)) 
         $output[]=$e; 
    
    echo $row['name']; 
    
    mysql_close(); 
    ?> 
    

    这是正确的吗?我不知道它是如何工作的。

    $stmt = $db->prepare("SELECT * FROM table WHERE $_REQUEST[place_id]"); 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    
    +0

    如果这是你的第一个PHP程序请你帮个忙,并停止使用过时的mysql_电话的家庭。切换到mysqli_或更好,PDO。 – fvu 2012-07-20 15:07:23

    +2

    不使用'mysql_ *'函数的另一个原因:您需要注意传递结果。 PDO在这里更加舒适,您可以通过'foreach'使用它,这可以减少您可以发生此类错误的地方。 – hakre 2012-07-20 15:08:09

    +0

    如果'place_id'是数字 - 你应该删除当前包含它的引号 – ManseUK 2012-07-20 15:21:19

    回答

    4

    你必须在这条线一个错字:

    while($e=mysql_fetch_assoc($q)) 
    

    $q需求是$query。我在代码中看不到变量$q。这是一个在PHP代码中的常见问题,就好像你引入了一个名字,如$qphp是“很好”,足以为你创建变量并将其初始化为null而不是理智地给你一个错误。

    +0

    这不是该(短)脚本中唯一的错误。 – hakre 2012-07-20 15:09:07

    2

    您需要将mysql_fetch_assoc()与mysql_query的结果相关联,这里是$ query。

    <?php 
    
    include "db_config.php"; 
    
    $query = mysql_query("SELECT * FROM places WHERE place_id='".mysql_real_escape_string($_POST[place_id])."'"); 
    
    while($e=mysql_fetch_assoc($query)) 
        $output[]=$e; 
    
    print(json_encode($output)); 
    
    mysql_close(); 
    ?> 
    

    此外,你需要使用一些PDO或mysqli的,因为mysql_被弃用:http://php.net/manual/en/function.mysql-query.php

    +0

    好....如何写你说的?使用pdo或mysqli? – Loshi 2012-07-20 15:12:12

    相关问题