MySQL:如何检索包含撇号的数据

时间:2015-10-08 06:08:49

标签: php mysql mysqli

我在从mysql中检索包含撇号的数据时遇到问题。我在保存具有撇号的数据时没有问题,因为我在将数据插入数据库时​​使用mysqli_real_escape_string但是在检索数据时遇到错误。我在PHP中用于检索数据的示例代码是mysqli_query($con,"SELECT column1data FROM Table1 WHERE column2data LIKE '".$data."' ")or die(mysqli_error($con));,而$data是包含撇号的示例代码。

2 个答案:

答案 0 :(得分:4)

在将变量绑定到查询时,尤其是当它是字符串时,仍然使用mysqli_real_escape_string()。不仅仅是为了插入数据。

$data = mysqli_real_escape_string($data);

您还应该查看prepared statement。在将查询绑定之前无需清理变量,准备好的语句将为您完成。

$data = "%{$data}%"; /* CHANGE THIS IF YOU DON'T WANT TO USE % */

$stmt = $con->prepare("SELECT column1data FROM Table1 WHERE column2data LIKE ?")){ /* PREPARE YOUR STATEMENT */
  $stmt->bind_param("s", $data); /* BIND THE DATA */
  $stmt->execute(); /* EXECUTE THE QUERY */
  $stmt->bind_result($column1data); /* BIND THE RESULT TO THIS VARIABLE */
  $stmt->fetch(); /* FETCH THE RESULT */
  echo $column1data; /* ECHO THE RESULT */
  $stmt->close(); /* CLOSE THE STATEMENT */
}

答案 1 :(得分:1)

您应该使用namespace Library1 { public class AlphaTextBox : TextBox { protected override void OnKeyPress( KeyPressEventArgs e ) { base.OnKeyPress(e); if( !Char.IsLetter(e.KeyChar) ) { MessageBox.Show("Non-alpha character is pressed !"); } } } } 每个时间将字符串放入SQL代码中。使用mysqli_real_escape_string()而非mysqli_real_escape_string($data)