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