繁体   English   中英

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

[英]Fetch data with PHP and MySQL of a “text” column with special characters on it

我有一个MySQL数据库,该数据库的其中一个表(theTable)上具有此定义

CREATE  TABLE `theDatabase`.`theTable` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `thecolumn` TEXT NOT NULL ,
  PRIMARY KEY (`id`) );

我正在尝试使用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 theTable ,该列中显示的信息thecolumnNULL如果thecolumn有特殊字符。 我将thecolumn定义为text因为我需要在其上存储大文本( thecolumn个字母)。

例如, executeSelect.php?query=select * from theTableid=1;thecolumn=asdftheTable工程确定,但具有相同的ExecuteSelect id=1;thecolumn=ásdftheTableNULLthecolumn

我试图使用MySQL控制台执行相同的查询,并且工作正常。 我正在使用Apache 2.4和PHP 5.3。

我在这里误解是我的php代码无法以正确的方式从MySQL的text列中检索数据吗?

我强烈建议不要这样做,因为这种方法很容易遭受SQL注入攻击

代码不应该是:

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

我不推荐这种方法,建议也使用PDO

两年后,困扰我的是这个问题没有答案可以解决我的问题。

正如Mike W在问题注释中指出的那样,问题出在sql客户端中的编码。

如果使用MySQLi,则可以使用PHP中描述的内容:mysqli :: set_charset-Manual

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM