php - MySQL SELECT 查询似乎跳过空格

标签 php mysql string select space

我是 PHP 和 mySQL 的初学者,我正在我的项目中使用它。我的查询有点问题。

这是我的代码:

    $doctname = mysql_query("SELECT name_of_doctor FROM {$table} WHERE department_no = '{$_REQUEST['deptno']}'");
    $doctnamerow = mysql_fetch_row($doctname);

    do
    {
        foreach ($doctnamerow as $cell)
        {
            $doctnamerowvalue = $cell;
        }
    } while ($doctnamerow = mysql_fetch_row($doctname));

所以我遇到的问题是,如果医生的名字之间有空格(例如“AJ Ramos”),那么它似乎会跳过空格,只返回“AJ”而不是姓氏。我该怎么做呢?谢谢=)

编辑:

愚蠢的我,这只是我的代码的一个错误,我使用 $doctnamerowvalue 作为我的文本框之一的 value=$doctnamerow 并忘记加双引号,这导致 value=doctor name 而不是 value= “医生姓名”。抱歉

最佳答案

Flash 代码审查:

  • mysql_* 已弃用。使用 MySQLi 或 PDO。
  • 您的代码对 SQL 注入(inject)完全开放
  • $doctornamerowvalue 在每次迭代时都会被覆盖
  • 您所做的foreach毫无意义。
  • 变量名称选择不当。

这里重构了:

// do these in a config file !!!
$db = new PDO('mysql:dbname=' . DB_NAME . ';host=localhost', DB_USER, DB_PASS);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // if you want to use associative arrays

// here is the refactored code
$query = "SELECT name_of_doctor FROM `{$table}` WHERE department_no = :deptno";

$stmt = $db->prepare($query);
$stmt->execute(array(':deptno' => $_REQUEST['deptno']));
$doctors = $stmt->fetchAll();

foreach ($doctors as $doctor) {
     echo $doctor['name_of_doctor'] . '<br>';
}

与您的“错误”相关

  • 检查表结构和数据。有可能该字段只包含姓氏,而还有另一个字段包含姓名。
  • 检查表长度 - 也许它太小,因此字符串被截断。

关于php - MySQL SELECT 查询似乎跳过空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659388/

相关文章:

php - 如何在图像出现时为其添加边框?

php - Joomla Infinite Scrolling mysql 分页问题

mysql - MySQL的路径枚举树模型

mysql - 将一个大表拆分为多个表

python - 在python中将 '1/2'和str(1/2)传递给decimal.Decimal之间的区别

php mySQL pdo auto_increment 行的主键

php - 如何使用 PHP 与服务器中的另一个应用程序一起工作?

centos - PHP 无法连接到 CentOS 7 上的 PostgreSQL

javascript - 哪些字符与 Array.from 分组?

mysql - abinitio 中从字符串到 window-1252 的字符集转换