我在製表符分隔符文件(txt或csv文件)中有以下數據。MySQL:曲線撇號'WHERE子句無返回
Adams’ Inn
Ambassador Inn a
Amberley Suite
America’s Best Inn
Amber's Inn
我有一個PHP腳本,將讀取這些數據插入到數據庫中。但是,在插入腳本之前,請檢查它們是否已經存在。
$stmt = $sql->prepare("SELECT ID,Name FROM `establishment` WHERE Name=?");
$stmt->bind_param("s",$Name);
$stmt->execute() or die($stmt->error);
$stmt->store_result();
if($stmt->num_rows==0){
// do insert query
}
else{
$stmt->bind_result($ID,$Name);
$stmt->fetch();
print "$ID:$Name already exist"';
}
注:假設establishment
表已具有以下數據。我有結構和數據如下:
/*Table structure for table `establishment` */
DROP TABLE IF EXISTS `establishment`;
CREATE TABLE `establishment` (
`ID` int(9) NOT NULL AUTO_INCREMENT,
`Name` varchar(64) DEFAULT NULL,
KEY `ID` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
/*Data for the table `establishment` */
insert into `establishment`(`ID`,`Name`) values (1,'Ambassador Inn '),(2,'Adams’ Inn'),(3,'Amberley Suite'),(4,'Amber\'s Inn'),(5,'America’s Best Inn ');
現在,腳本執行罰款沒有錯誤,但問題是,曲線撇號’
不能搜索。
那麼,任何想法,爲什麼這是發生在曲線撇號’
?
另注:當手動把它放在一個變量$Name = "Adams’ Inn"
它工作正常。
有你使用'$ stmt-> bind_param( 「S」,和addslashes($名));'。試試吧。 – 2013-02-22 04:06:43
@YogeshSuthar參數化查詢的重點在於您不必這樣做。 – 2013-02-22 04:08:38
@tc。完全同意 :)。我認爲如果我們能夠嘗試並可能解決問題。 – 2013-02-22 04:10:03