Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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和MySQL获取数据;“文本”;带有特殊字符的列_Php_Mysql - Fatal编程技术网

使用PHP和MySQL获取数据;“文本”;带有特殊字符的列

使用PHP和MySQL获取数据;“文本”;带有特殊字符的列,php,mysql,Php,Mysql,我有一个MySQL数据库,它的一个表(theTable)上有这个定义 我正在用PHP尝试这一点: /*File executeSelect.php*/ mysql_connect("theServer","theUser","thePassword") or die(mysql_error()); mysql_select_db("theDatabase") or die (mysql_error()); $q = mysql_query($_REQUEST['query']); while($

我有一个MySQL数据库,它的一个表(theTable)上有这个定义

我正在用PHP尝试这一点:

/*File executeSelect.php*/
mysql_connect("theServer","theUser","thePassword") or die(mysql_error());
mysql_select_db("theDatabase") or die (mysql_error());
$q = mysql_query($_REQUEST['query']);
while($e = mysql_fetch_assoc($q))
    $output[] = $e;
print(json_encode($output));
mysql_close();
如果我执行一个
executeSelect.php?query=select*from the table
,则列
the column
显示的信息是
NULL
如果
该列有特殊字符。我将
定义为
文本
,因为我需要在其上存储大文本(500~1000个字母)

例如,一个
executeSelect.php?query=select*from the table
,id=1;
表格中的column=asdf
工作正常,但相同的executeSelect与
id=1;
中的column=asdf
列提供
NULL

我曾尝试使用MySQL控制台执行相同的查询,但效果良好。我正在使用Apache2.4和PHP5.3


我在这里错的是,我的php代码没有以正确的方式从MySQL的
文本
列检索数据?

我强烈建议不要这样做,因为如果代码不是:

while($e = mysql_fetch_assoc($q))
    $output[] = $e['thecolumn'];
print(json_encode($output));
mysql_close();

我不推荐这种方法,我也建议使用PDO。两年后,这个问题没有解决我的问题,这让我很困扰

正如Mike W在问题的评论中指出的,问题在于sql客户机中的编码

如果使用MySQLi,可以使用中描述的内容


在我的场景中,只需在打开连接后立即执行一个简单的
$mysqli->set_charset(“utf8”)

我知道这一点,但它表明了我在主项目中遇到的问题的想法(使用安全的工作方式),正如Mike W所说的,可能是查询的URLencodedIt方式,而不是。已经尝试过Mike W建议使用
$q=mysql\u查询(“从表中选择*),不要在URL中使用POST方式或
?查询=
。如果使用这个
$q=mysql\u查询(“从表中选择*”),会发生什么。您可能会看到从querystring传入查询时出现问题。哦,而且mysql已被弃用,您应该使用mysqli。我刚刚阅读了mysqli内容,谢谢您的提示。而不是,
$q=mysql\u查询(“从表中选择*)没有给出任何错误。我使用带有XDebug和开发模式PHP.ini的PHP来显示任何不好的内容。是
json\u ecode
输出中的
id
数据,并且只有
列是空的,还是两列都是空的?您是否也尝试过
echo$\u REQUEST['query']
查看从url中提取查询后的查询结果?将
或die(mysql\u error())
添加到查询-
$q=mysql\u查询($\u REQUEST['query'])或die(mysql\u error())
json\u encode
结果中,
列为
NULL
<代码>echo$\u REQUEST['query']
显示一切正常(显示的查询与发送的查询完全相同)
while($e = mysql_fetch_assoc($q))
    $output[] = $e['thecolumn'];
print(json_encode($output));
mysql_close();