php - 我在 postgresql 中的表正在截断这些字符串

标签 php postgresql escaping

我在 VMobjects 中有一个这样的表

MGRCONFIG_DB=# select * from vmobjects;
               guid                |   ipaddress   | username | password |  hostid  |     vmname      | guestostype | guestos
name
-----------------------------------+---------------+----------+----------+----------+-----------------+-------------+--------
-----
 7728235734dcd25700e7c02.96324791  | gsdag         | gsdasd   |          | Physical | rag             | windows     |
 3642656604dcd343d3bcd11.54875889  | fsd           |          |          | Physical | derde           | windows     |
 17714467484dcd35dd0fa677.27764184 | dsf           |          |          | Physical | fdsfd           | windows     |
 1837080764dcd362fafe404.83675706  | fgf           |          |          | Physical | fgf             | windows     |
 2791118544dcd363df11bf1.21924610  | fdghhg        |          |          | Physical | $%^             | windows     |
 7716352574dcd365c9eb777.30236042  | dsffd         |          |          | Physical | ^               | windows     |
 10753160514dcd366631f5b6.48505657 | gfdgd         |          |          | Physical | @               | windows     |
 8253046164dcd366f177bc3.85542378  | ghgfdhg       |          |          | Physical | @@@@@@@@@@@@@@  | windows     |
 9126180214dcd367a5b42e0.23605256  | fsdfdsfdsf    |          |          | Physical | fdsaj;(         | windows     |
 11086632854dcd36f62f7e79.14470771 | dfsdfsd       |          |          | Physical | ^               | windows     |

现在我有一个 php 页面 addvm.php,当我添加 username/ip/password/ 或任何它被截断的内容时

gets truncated on entering data as '~!@#$%^&*()_+=-`{}|\][:"';<>?/.,' for all fields.

使用后pg_escape_string 我可以插入 '~!@#$%^()_=-`{}|][:"';<>?/. 除了 + 和 & 之外的所有字符串。 @Emil Vikström:说我必须为此使用 urlencode。但我不知道,它是如何使用的?

最佳答案

使用pg_escape_string在将数据输入 SQL 查询之前对数据进行处理:

$data = '~!@#$%^&*()_+=-';
$data_escaped = pg_escape_string($data);
$query = 'INSERT INTO table (data) VALUES("'. $data_escaped .'");';

关于php - 我在 postgresql 中的表正在截断这些字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989418/

相关文章:

php - 期望多个结果时正确的 SELECT 查询

sql - 创建 Postgres 交叉表查询并计算列之间的差异

java - 程序员在 System.in.read() 中使用 char 是否有任何原因?

bash - 如何在 bash 变量中转义换行符和制表符?

php - 获取标记帖子 wordpress

php - 为什么我无法使用谷歌浏览器登录到 magento 后端

node.js - 通过 nodejs 和 websockets 将功能从 openlayers 保存到 postgis

java - Java 中无效的转义序列(有效的是\b\t\n\f\r\"\'\\)

php - 设置 $_POST 变量

PostgreSQL、三元组和相似性