使用PHP和MySQL获取数据;“文本”;带有特殊字符的列
我有一个MySQL数据库,它的一个表(theTable)上有这个定义 我正在用PHP尝试这一点:使用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($
/*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查询(“从表中选择*)直接在php文件中使用code>,不要在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();