查询工作正常phpmyadmin从PHP运行时返回0行

时间:2010-02-09 21:04:38

标签: php mysql phpmyadmin

我真的很难过。这是php:

更新:我已经转义输入(在我以不同方式执行此操作之前,但不知道mysql_real_escape_string)。另外,我用单引号替换双引号,但同样的问题正在发生。以下是更新后的代码:

$request = mysql_real_escape_string($_POST['id']);
$colName = mysql_real_escape_string($_POST['col_name']);

function executeAssoc1($q)
{
    $r = mysql_query($q) or die(mysql_error() . ' ' . $q);
    $rass = mysql_fetch_assoc($r);
    return $rass;
}

foreach(array_keys($_POST) as $pitem)
{

    if($pitem == (...what I want it to...))
    {
        $pitem_name = mysql_real_escape_string(rawurldecode($pitem));

        $qf = "SELECT * FROM possible_values WHERE table_id=$request AND col_name='$colName' AND value = '$pitem_name'";
        $qfr = executeAssoc1($qf);
        var_dump($pitem_name);
        echo '<br>';
        var_dump($qf);
        echo '<br>';
        var_dump($qfr);
    }

}

以下是该代码在一个循环中输出的部分内容:

  

string(37)“1。新英格兰(东北地区)”
  string(122)“SELECT * FROM possible_values WHERE table_id = 3 AND col_name ='DIVISION'AND value ='1 .New England(Northeast region)'”
  布尔(假)

现在,当我将该查询复制到phpmyadmin SQL编辑器时,它实际上会返回一个结果。我甚至尝试使用here中建议的LIKE“%...%”,但同样的事情发生(phpmyadmin返回一行,php返回0行)。

4 个答案:

答案 0 :(得分:2)

来自rawurldecode()上的手册:

  

注意:rawurldecode()不会将加号('+')解码为空格。 urldecode()的确如此。

如果输出你的mySQL查询,我打赌你的strting看起来像这样:

1+.New+England+(Northeast+region)

尝试urldecode(),如手册条目所示。

答案 1 :(得分:0)

你应该使用单引号而不是双引号,即:

SELECT * FROM possible_values WHERE table_id=3 AND col_name='DIVISION' AND value = '1 .New England (Northeast region)'

答案 2 :(得分:0)

SQL中的字符串不允许使用双引号,因为它们用于标识符(例如MySQL使用反引号''')。我认为MySQL允许他们使用某些设置的字符串,但你不应该使用它们。

从技术上讲,应该返回一个错误,所以我认为这不是你的问题。

你可能遇到的问题是你正在使用旧的mysql扩展,它可能不支持你的mysql版本。

答案 3 :(得分:0)

可能是一个错字,但

table_id=$request

应该有引号:

table_id='$request'