PHP MySQL 选择不适用于字段"name"



我知道这很奇怪,但如果使用名为name的字段,我有一个select返回null。如果我删除它,那么它就工作了,而且我已经更改了表中的数据。如果我直接查询mysql,它会起作用。里面可能有什么东西,但我看不出有什么奇怪的。

任何可以帮助我调查的建议都是受欢迎的:(

class go { 
function Query($sql){
$results = $this->db->query($sql);
if (mysqli_num_rows($results)<1){    
throw new Exception('No Results');       
}    
$out = array();
while ($r = $results->fetch_object()){       
$out[] = $r;  
} 
return json_encode($out);    
$out = null;
}
}
$client = new go;
//not working
$sql = "select name from books limit 10"; 
$sql = "select name,description from books limit 10";
$sql = "select * from books limit 10";
// works!
$sql = "select description from books limit 10"; 
$data = $client->Query( $sql );

更新

我发现这个问题是由一些拉丁口音的字符引起的,比如óñé

DBMS一些保留关键字。Name是MYsQL中的保留名称。将名称更改为另一个列名,可能是name1。我认为这应该有效。mysql保留关键字检查列表https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8-0-尾-N。

更新

在初始化与mySQL server usgset_charset()方法的连接时,请尝试设置字符集。我使用以下字符集:

$this->db->set_charset('utf8mb4');

这可能会解决您的问题。

使用mysqli_set_charset($db,"utf8"(;

最新更新