<?php
// Working SELECT query.
$db = new SQLite3('casino.db');
// This works great and returns only name = bergpau !!!
$results = $db->query('SELECT * FROM employe WHERE username="bergpau"');
while ($row = $results->fetchArray())
print $row['nom'] . "<BR>";
// This DOES NOT WORK AT ALL, returns no values !!! HELP !!!
$astring = "bergpau";
$results = $db->query('SELECT * FROM employe WHERE username=$astring');
while ($row = $results->fetchArray())
print $row['nom'] . "<BR>";
?>
打开数据库,好的 不返回任何值,因为它无法验证WHERE子句中的字符串
答案 0 :(得分:1)
SQL(和PHP)中的字符串需要像在第一个查询(username="bergpau"
)中那样引用。这也可以让你打开SQL注入;你应该使用参数化查询。
$results = $db->query("SELECT * FROM employe WHERE username='{$astring}'");
单引号中的变量也不由PHP处理。
与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中出现时不会被扩展。
- http://php.net/manual/en/language.types.string.php
或者你可以在赋值中传递引号(注意双引号用于PHP中的封装,单引号存储在$astring
的值中):
$astring = "'bergpau'";
然后你只需要连接变量。
$results = $db->query('SELECT * FROM employe WHERE username=' . $astring);